Ho un'app Node.js / Express.js in esecuzione sul mio server che funziona solo sulla porta 3000 e sto cercando di capire perché. Ecco cosa ho trovato:
- Senza specificare una porta (
app.listen()
), l'app viene eseguita ma la pagina Web non viene caricata. - Sulla porta 3001 (
app.listen(3001)
) o su qualsiasi altra porta non in uso, l'app viene eseguita ma la pagina Web non viene caricata. - Sulla porta 2999, l'app genera un errore perché qualcos'altro sta usando quella porta.
- Sulla porta 3000, l'app viene eseguita e la pagina Web viene caricata correttamente.
So che le app Express utilizzano per impostazione predefinita la porta 3000. Ma stranamente, la mia app viene eseguita solo quando la eseguo esplicitamente sulla porta 3000 ( app.listen(3000)
).
Ho trovato questo sulla linea 220 di /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Che sta facendo come detto in precedenza: impostare la porta su quanto specificato o su 3000 se non viene specificato nulla.
Come posso far funzionare la mia app su una porta diversa come 8080 o 3001?
Grazie!
Modifica: codice di esempio (nodo molto semplice / app Express)
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);
port
è richiesto da.listen()
, quindi non dovresti provare a farne a meno. 2) Ricevi errori durante l'esecuzione dell'applicazione? O sembra semplicemente inaccessibile da un browser? 3) Si sta tentando di accedere al sito web sulla stessa macchina conlocalhost:3000
,localhost:3001
e così via? Se stai utilizzando due macchine, un client e un server, dovrai aggiungere eccezioni al firewall sul server per consentire a Node di ricevere richieste dal client.