Mam aplikację Node.js / Express.js uruchomioną na moim serwerze, która działa tylko na porcie 3000 i próbuję dowiedzieć się, dlaczego. Oto co znalazłem:
- Bez określenia portu (
app.listen()
) aplikacja działa, ale strona internetowa się nie ładuje. - Na porcie 3001 (
app.listen(3001)
) lub innym nieużywanym porcie aplikacja działa, ale strona internetowa nie jest ładowana. - Na porcie 2999 aplikacja zgłasza błąd, ponieważ coś innego używa tego portu.
- Na porcie 3000 aplikacja działa, a strona internetowa ładuje się poprawnie.
Wiem, że aplikacje Express domyślnie korzystają z portu 3000. Ale, co dziwne, moja aplikacja działa tylko wtedy, gdy wyraźnie ustawię ją na porcie 3000 ( app.listen(3000)
).
Znalazłem to w linii 220 z /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Robi się tak, jak wcześniej wspomniano: ustawianie portu na określony lub na 3000, jeśli nic nie zostało określone.
Jak mogę sprawić, by moja aplikacja działała na innym porcie, takim jak 8080 lub 3001?
Dzięki!
Edycja: przykład kodu (bardzo prosta aplikacja Node / 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
jest wymagane przez.listen()
, więc nie powinieneś próbować obejść się bez. 2) Czy podczas uruchamiania aplikacji pojawiają się jakieś błędy? A może po prostu wydaje się niedostępny z przeglądarki? 3) Czy próbujesz uzyskać dostęp do strony internetowej na tym samym komputerze zlocalhost:3000
,localhost:3001
itp? Jeśli używasz dwóch komputerów, jednego klienta i jednego serwera, musisz dodać wyjątki do zapory na serwerze, aby umożliwić Node odbieranie żądań od klienta.