У мене на сервері працює програма 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?
Дякую!
Редагувати: зразок коду (дуже простий вузол / програма 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);
.listen(). Вище, коли я кажу: "додаток працює", це те саме, що ви говорите, "відсутність помилок під час запуску програми". Коли я кажу, "веб-сторінка не завантажується", це те саме, що ви говорите, "недоступна з браузера". Весь доступ з тієї ж машини (мого сервера). Дякуємо за відгук.
$ supervisor app.jsабо $ PORT=[PORT] node app.jsколи хочу встановити змінну порту середовища. Я викладу зразок коду.

portвимагається.listen(), тому вам не слід намагатись обійтись. 2) Чи виникають помилки під час запуску програми? Або це просто здається недоступним із браузера? 3) Ви намагаєтеся отримати доступ до веб - сайт на одній машині зlocalhost:3000,localhost:3001і так далі? Якщо ви використовуєте дві машини, один клієнт та один сервер, вам потрібно буде додати винятки до брандмауера на сервері, щоб дозволити Node отримувати запити від клієнта.