【问题标题】:Heroku "Process exited with status 137" node.js appHeroku“进程以状态 137 退出”node.js 应用程序
【发布时间】:2019-12-14 20:11:28
【问题描述】:

我最近发布了一个关于类似主题的问题。我对 URL 上的所有内容进行了大修,并且发生了与上次相同的事情:我可以部署所有内容并使用 heroku local web 运行它。当我去网络测功机时,它说我有一个应用程序错误,然后我检查了日志。这是它所说的(我在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 的初学者,因此非常感谢任何帮助。我将提供找到答案所需的任何信息。

【问题讨论】:

  • 对我来说,在我的机器上全局安装的 npm 包在 package.json 中并不明确。因此,在 heroku 中,require 行会失败

标签: javascript node.js mongodb heroku


【解决方案1】:

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

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

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

如果还是不能解决你的问题,你可以试试这个命令heroku run bash,这个命令可以让你进入heroku环境并启动你的服务器。

【讨论】:

  • 是的,这真的很奇怪,因为当我使用heroku run bash 并运行npm start 时,一切都按计划运行......它只是用于网络测功机。我应该试试别的吗?
  • 您使用的端口似乎有问题:Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch。尝试使用process.env.PORT
  • 使用 process.env.PORT 而不是硬编码端口为我修复了它。
  • 我正在使用 Gatsby 和 Heroku,一切正常,部署正常。但是现在它已经投入生产了,即使我什么都不做也无法构建应用程序(除了一个空格,我可以这样做git push heroku master
【解决方案2】:

我在 heroku 上托管 Node 应用程序时遇到了同样的错误,结果是端口问题,所以只需将端口设置为等于这个

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

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

然后在下面设置设置端口变量

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

【讨论】:

    【解决方案3】:

    这绝对是一个端口问题。只需使用这样的东西:

    var port = process.env.PORT || 3002
    

    指定您的端口。

    就是这样。

    【讨论】:

      【解决方案4】:

      您的应用似乎在实际启动服务器之前就超时了:

      应用启动超时

      这个过程会不会花费太长时间来最小化生产资产?

      【讨论】:

      • 如果是这样,你如何设置你的环境保持更长时间?
      猜你喜欢
      • 2017-09-28
      • 2019-02-26
      • 2020-10-18
      • 2020-09-25
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多