Приложение Node.js в Heroku работает на Foreman, но не при развертывании?

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

2012-08-20T03:22:48+00:00 heroku[web.1]: Starting process with command `node index.js`
2012-08-20T03:22:49+00:00 app[web.1]: Server has started.
2012-08-20T03:22:49+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 15134, should be 52717 (see environment variable PORT)
2012-08-20T03:22:49+00:00 heroku[web.1]: Stopping process with SIGKILL
2012-08-20T03:22:51+00:00 heroku[web.1]: Process exited with status 137
2012-08-20T03:22:51+00:00 heroku[web.1]: State changed from starting to crashed

Я пытался изменить порт, к которому он привязан, но каждый раз, когда я это делаю, он снова меняет порт. Что-то еще не так в моем приложении?


person Brad Ross    schedule 20.08.2012    source источник
comment
Вы пытаетесь жестко запрограммировать порт? Heroku каждый раз будет привязываться к другому порту. Ваш Procfile должен использовать переменную $PORT, если это еще не сделано.   -  person numbers1311407    schedule 20.08.2012
comment
Я должен попробовать это. Поддерживает ли Node.js это?   -  person Brad Ross    schedule 20.08.2012
comment
Heroku установит переменную окружения PORT, которую вы и хотите использовать. Это может вам помочь: stackoverflow.com/questions/7503632/   -  person numbers1311407    schedule 20.08.2012
comment
Неа. Не работает, просто пишет, что $PORT не определен   -  person Brad Ross    schedule 20.08.2012
comment
Я использую Vanilla Node.js, без Express или любой другой фреймворк   -  person Brad Ross    schedule 20.08.2012
comment
Проверьте ссылку. узел не принимает порт в качестве аргумента командной строки (не имеет смысла для узла), а использует переменную среды PORT (process.env.PORT в узле). Это порт, к которому вы должны привязаться. Он доступен через $PORT в Procfile, но на самом деле это бесполезно для вас в узле (не обращайте внимания на первый комментарий).   -  person numbers1311407    schedule 20.08.2012
comment
Спасибо! Работает так хорошо, что process.env.PORT! Большое спасибо!   -  person Brad Ross    schedule 20.08.2012


Ответы (1)


на Heroku вам нужно использовать порт, содержащийся в переменной среды: process.env.PORT

person Rotem Harel    schedule 31.10.2012