Ich versuche, meine node.js-Anwendung (mit Express und Mungo) zu openshipt zu deployen und ich bin dazu nicht in der Lage. Die Anwendung funktioniert perfekt in meiner lokalen Umgebung.
Mein Einstiegspunkt ist die Datei / bin / www
Ich begründe dies als Einstiegspunkt bei openshift mit dieser Zeile in der package.json Datei (pro dieser Thread ):
%Vor%Ich habe dafür gesorgt, dass meine mongodb-Verbindung mit Umgebungsvariablen entsprechend dem Guide wie folgt eingestellt wird:
%Vor%Der Fehler, den ich bekomme, ist:
%Vor%Das ist mir besonders wichtig, weil ich Port 8080 nirgendwo angeben kann. In der Tat ist der Standard-Port hier angegeben:
%Vor%Ich bin nicht wirklich sicher, wohin ich von hier aus gehen soll. Ich habe nicht genug Informationen, um meinen nächsten Schritt zu bestimmen.
[Bearbeiten] Ich habe eine Protokollierung hinzugefügt, um zu testen, auf welchem Port diese ausgeführt wird, aber die Protokollierungsanweisung wird niemals ausgeführt. Hier ist der Code
%Vor%und Ausgabe
%Vor% TEST TEST TEST
stammt aus einer Logging-Anweisung am Anfang der Einstiegspunktdatei. Etwas scheint zu versagen, bevor es den console.log("PORT: ", port);
erreicht. Es ist wahrscheinlich, dass dies etwas mit app.js
zu tun hat, wo die MongoDb-Verbindung hergestellt wird.
[/ edit]
Der Fehler stellte sich als generischer Fehler heraus, der nichts mit dem Port zu tun hatte. Offensichtlich, wenn es einen fatalen Javascriptfehler gibt, gibt es diese Nachricht.
Hatte genau dieselbe Fehlermeldung: Application 'appname' failed to start (port 8080 not available) on open shift node app
Nach vielen Lektüre fand heraus, dass viele verschiedene Benutzer zu verschiedenen Lösungen für die gleiche Fehlermeldung, einschließlich mir selbst kam. Ich rate daher, keine schnellen Lösungen für diesen Fehler zu suchen. Der wichtigste Schritt ist Schritt 1 in der folgenden Liste.
Meine Lösung bestand darin, eine fehlende Abhängigkeit in package.json hinzuzufügen, für meinen speziellen Fall musste ich "bcrypt":"~0.8.5"
hinzufügen, so ein blödes Ding!
Nun, wie konnte ich das Problem nur beheben, wenn ich den Fehler "Port 8080 nicht verfügbar" kenne:
cd $OPENSHIFT_REPO_DIR
) und führte npm start
aus
[...] Error: Cannot find module 'bcrypt' [...]
npm info bcrypt | grep "version:"
, es gab "0.8.5" Ich habe hier im Detail erwähnt ... Anwendung 'Anwendungsname' konnte nicht gestartet werden (Port 8080 nicht verfügbar) in der geöffneten Schichtknoten-App
Die Lösung ist, dass Sie beim Abhören des Servers die IP-Adresse angeben müssen.
So habe ich es behoben.
%Vor%Ich glaube nicht, dass diese Zeile den Server am angegebenen Port erstellen wird
%Vor%Sie müssen es sagen, um auf den Port wie folgt zu hören:
%Vor% Für mich war es die Verbindungszeichenfolge. Der Vorschlag, der direkt nach dem Erstellen der mongodb-Kassette vorgeschlagen wurde, funktioniert nicht: Connection URL: mongodb://$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/'nodejs'
Aber von diesem Artikel , von mit der OPENSHIFT_MONGODB_DB_URL
Variable hat es funktioniert.
}