Nodejs Express в приложении Heroku EACCES 0.0.0.0:80 - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь запустить приложение Node во вновь созданном приложении Heroku из их сети.Я следовал их инструкциям, но при отображении статуса приложения все равно получаю ошибки.

Я следовал разделу Node.js, начинающему без команды heroku create, так как я уже создавал из Интернета.

Так что, когда я запускаю: heroku ps:scale web=1, он показывает мне:

Масштабирование динам ... закончено, теперь веб работает на 1: Свободно

Но при запуске heroku ps:

=== web (бесплатно): запуск npm (1)

web.1: сбой 2018/10/25 11:25:49 -0300 (~ 8 мес. Назад)

Так что мои логины heroku logs --tail показывают мне эту ошибку:

2018-10-25T14: 25: 44.000000 + 00:Приложение 00 [api]: Сборка выполнена успешно

2018-10-25T14: 25: 46.451739 + 00: 00 heroku [web.1]: запуск процесса с помощью команды npm run start

2018-10-25T14: 25: 49.113832 + приложение 00:00 [web.1]:

2018-10-25T14: 25: 49.113864 + 00:00 app [web.1]:> my-app@1.0.0 start / app

2018-10-25T14: 25: 49.113866 + 00: 00 app [web.1]:> узел server.js

2018-10-25T14: 25: 49.113867Приложение +00: 00 [web.1]:

2018-10-25T14: 25: 49.418151 + 00: 00 app [web.1]: events.js: 167

2018-10-25T14: 25: 49.418191 + 00: 00 app[web.1]: throw er;// Необработанное событие «ошибка»

2018-10-25T14: 25: 49.418193 + 00: 00 app [web.1]: ^

2018-10-25T14: 25: 49.418194+00:00 app [web.1]:

2018-10-25T14: 25: 49.418196 + 00: 00 app [web.1]: Ошибка: прослушивание EACCES 0.0.0.0:80

Итак, я проверил, не ошибся ли я при настройке.

Я использую простую Express-маршрутизацию и сервер с этим кодом:

app.get('/', (req, res) => { ... });
app.listen(80, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

Также я убедился, что добавилengines до package.json :

"scripts": {
    "start": "node server.js"
},
"engines": {
    "node": "10.11.0",
    "npm": "6.4.1"
},

Я также создал файл Procfile в корневом пути с web: npm run start внутри.

Поэтому, когда все проверено, я просто запускаю эти команды, и все выглядит великолепно, пока я не проверю журналы или не загляну в приложение:

git commit -am "my commit text"
git push heroku master

Я вижу это в журналах:

пульт: -----> Сжатие ...

пульт: Выполнено: 18.3M

пульт: -----> Запуск ...

удаленный: выпущен v12

удаленный: https://my -app.herokuapp.com / развернут на Heroku

удаленный:

Удаленный: Проверка развертывания ... выполнено.

В https://git.heroku.com/my-app.git

3656da0..f1eb078 master -> master

Итак ... Есть предложения о том, чтоя делаю не так?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Heroku dynos предоставляет динамический порт для привязки вашего приложения.Это значение отображается в переменной $ PORT env.Вместо этого вы должны изменить код для привязки к этому порту.

const port = process.env.PORT || 80;

app.listen(port, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});
0 голосов
/ 25 октября 2018

Вам необходимо предоставить порт для приложения, которое будет прослушиваться в переменной среды.
Что делает heroku, так это то, что оно запускает наше приложение на динамическом порту.

Попробуйте использовать это:

const PORT = process.env.PORT || 3000;
app.listen(PORT, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

Также не следует привязывать порт к 80, так как это зарезервированный стандартный порт http.

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