Несмотря на app.listen, приложение express не привязывается к порту - PullRequest
0 голосов
/ 30 марта 2020

В точности, как это звучит.
Я использую ExpressJS для моего Node-приложения, которое размещено на Heroku.
Несмотря на использование app.listen, оно постоянно получает / вызывает heroku Ошибки R10 , вызванные тем, что веб-приложение не привязано ко времени process.env.PORT.

Соответствующий код:

const app = express();
var isRoot = (process.getuid && (process.getuid() === 0));
var port;
if (isRoot) {
    port = 80;
} else {
    port = process.env.PORT | 8000;
}
const server = app.listen(port, onStartup);
function onStartup() {
    console.log("Started webserver on port "+port);
}

Теперь странно, я получая сообщение «Запущен веб-сервер на порту [foo]», оно просто не привязано к порту.

Журналы:

2020-03-30T19:50:39.434302+00:00 app[web.1]: > foo-bar@1.0.0 start /app
2020-03-30T19:50:39.434303+00:00 app[web.1]: > node scrape2.js
2020-03-30T19:50:39.434303+00:00 app[web.1]: 
2020-03-30T19:50:39.829882+00:00 app[web.1]: Verbose mode OFF
2020-03-30T19:50:39.830782+00:00 app[web.1]: Started webserver on port 8052
2020-03-30T19:51:37.415192+00:00 heroku[web.1]: State changed from starting to crashed
2020-03-30T19:51:37.293060+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2020-03-30T19:51:37.293142+00:00 heroku[web.1]: Stopping process with SIGKILL
2020-03-30T19:51:37.391762+00:00 heroku[web.1]: Process exited with status 137

Справка!

1 Ответ

0 голосов
/ 30 марта 2020

Я сделал глупо и случайно использовал побитовый оператор ИЛИ, что привело к его привязке к порту, отличному от process.env.PORT. Изменил его с | на || и теперь он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...