Heroku“进程退出状态137”node.js app

时间:2017-05-02 01:40:48

标签: javascript node.js mongodb heroku

我最近发布了一个类似主题的问题。我对URL上的所有内容进行了重大改动,并且上次发生了同样的事情:我可以部署所有内容并使用heroku local web运行它。当我去网络dyno,它说我有一个应用程序错误,然后我检查日志。这就是它说的(我在github上使用了一个名为atwork的项目):

2017-05-02T02:35:39.191493+00:00 app[web.1]: Loaded model: chats.js
2017-05-02T02:35:39.200517+00:00 app[web.1]: Loaded model: streams.js
2017-05-02T02:35:39.196830+00:00 app[web.1]: Loaded model: posts.js
2017-05-02T02:35:39.209761+00:00 app[web.1]: Loaded model: users.js
2017-05-02T02:35:40.067321+00:00 app[web.1]: AtWork running at http://:::8111
2017-05-02T02:35:50.116492+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=room111-thoughts.herokuapp.com request_id=44a6e779-e6b8-4a33-a5b9-53430af2ad8f fwd="108.221.62.78" dyno= connect= service= status=503 bytes= protocol=https
2017-05-02T02:36:35.859814+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-05-02T02:36:35.859903+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-05-02T02:36:35.956564+00:00 heroku[web.1]: Process exited with status 137
2017-05-02T02:36:35.969766+00:00 heroku[web.1]: State changed from starting to crashed
2017-05-02T02:37:22.933285+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=room111-thoughts.herokuapp.com request_id=80ffc71f-d792-4538-b50a-5140b7658819 fwd="108.221.62.78" dyno= connect= service= status=503 bytes= protocol=https

我是Heroku和Node.js的初学者,所以任何帮助都表示赞赏。我将提供寻找答案所需的任何信息。

4 个答案:

答案 0 :(得分:5)

我检查了日志,它说at=error code=H10 desc="App crashed",这意味着你有uncaught Exception,所以你应该检查你的代码。

如果您想在Heroku上使用mongodb,则应尝试为您的应用添加mongodb addon。你可以找到文档here

并尝试使用process.env.PORT,而不是您要使用的端口。

如果它仍然无法解决您的问题,您可以尝试使用此命令heroku run bash,此命令可以让您进入heroku环境并启动您的服务器。

答案 1 :(得分:1)

看起来您的应用在实际启动服务器之前超时:

  

App启动超时

这个过程是否需要花费太长时间才能缩小生产资产?

答案 2 :(得分:1)

在heroku上托管Node应用程序时,我遇到了同样的错误,事实证明这是端口问题,因此只需将端口设置为与此端口相同

var port = process.env.PORT || 8080;
  

所以process.env.PORT || 8080表示:环境变量PORT中的任何内容,如果环境变量PORT中没有任何内容,则为8080。

然后在下面设置set port变量

var server=app.listen(port,function() {
console.log("app running on port 8080"); });

答案 3 :(得分:0)

这绝对是端口问题。只需使用以下内容即可:

var port = process.env.PORT || 3002

指定您的端口。

仅此而已。