Ich habe eine Node.js / Express.js-App auf meinem Server, die nur auf Port 3000 funktioniert, und ich versuche herauszufinden, warum. Folgendes habe ich gefunden:
- Ohne Angabe eines Ports (
app.listen()
) wird die App ausgeführt, die Webseite wird jedoch nicht geladen. - Auf Port 3001 (
app.listen(3001)
) oder einem anderen Port, der nicht verwendet wird, wird die App ausgeführt, aber die Webseite wird nicht geladen. - Auf Port 2999 gibt die App einen Fehler aus, da dieser Port von einem anderen Benutzer verwendet wird.
- Auf Port 3000 wird die App ausgeführt und die Webseite wird einwandfrei geladen.
Ich weiß, dass Express-Apps standardmäßig Port 3000 verwenden. Seltsamerweise wird meine App nur ausgeführt, wenn ich sie explizit auf Port 3000 ( app.listen(3000)
) ausführen lasse .
Ich fand dies in Zeile 220 von /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Dies geschieht wie zuvor angegeben: Setzen Sie den Port auf den angegebenen Wert oder auf 3000, wenn nichts angegeben ist.
Wie kann ich meine App an einem anderen Port wie 8080 oder 3001 zum Laufen bringen?
Vielen Dank!
Bearbeiten: Codebeispiel (Sehr einfache Node / Express App)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
.listen()
. Wenn ich oben "Die App wird ausgeführt" sage, ist dies dasselbe wie Sie sagen: "Keine Fehler beim Ausführen der Anwendung". Wenn ich sage, "Webseite wird nicht geladen", ist dies dasselbe wie Sie sagen, "über einen Browser nicht zugänglich". Alle greifen von demselben Computer (meinem Server) zu. Danke für die Rückmeldung.
$ supervisor app.js
oder $ PORT=[PORT] node app.js
wenn ich die Umgebungsportvariable festlegen möchte. Ich werde ein Codebeispiel erstellen.
port
wird von benötigt.listen()
, daher sollten Sie nicht versuchen, darauf zu verzichten. 2) Erhalten Sie Fehler beim Ausführen der Anwendung? Oder scheint es nur über einen Browser unzugänglich zu sein? 3) Sind Sie versuchen, die Website auf der gleichen Maschine zuzugreifen mitlocalhost:3000
,localhost:3001
usw.? Wenn Sie zwei Computer verwenden, einen Client und einen Server, müssen Sie der Firewall auf dem Server Ausnahmen hinzufügen, damit Node Anforderungen vom Client empfangen kann.