У меня на сервере работает приложение Node.js / Express.js, которое работает только на порте 3000, и я пытаюсь понять, почему. Вот что я нашел:
- Без указания порта (
app.listen()
) приложение запускается, но веб-страница не загружается. - На порте 3001 (
app.listen(3001)
) или любом другом неиспользуемом порту приложение запускается, но веб-страница не загружается. - На порте 2999 приложение выдает ошибку, потому что что-то другое использует этот порт.
- На порту 3000 приложение запускается и веб-страница загружается нормально.
Я знаю, что приложения Express по умолчанию используют порт 3000. Но, как ни странно, мое приложение запускается только тогда, когда я явно заставляю его работать на порту 3000 ( app.listen(3000)
).
Я нашел это в строке 220 /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Что делает, как указано ранее: установка порта на то, что указано, или на 3000, если ничего не указано.
Как я могу заставить мое приложение работать на другом порту, например 8080 или 3001?
Спасибо!
Изменить: образец кода (очень простое приложение 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
требуется.listen()
, так что вы не должны пытаться идти без. 2) Возникают ли ошибки при запуске приложения? Или это просто кажется недоступным из браузера? 3) Вы пытаетесь получить доступ к веб - сайт на одной машине сlocalhost:3000
,localhost:3001
и т.д.? Если вы используете две машины, один клиент и один сервер, вам необходимо добавить исключения в брандмауэр на сервере, чтобы разрешить Node получать запросы от клиента.