我最近发布了一个类似主题的问题。我对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的初学者,所以任何帮助都表示赞赏。我将提供寻找答案所需的任何信息。
答案 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
指定您的端口。
仅此而已。