web-dev-qa-db-ja.com

Heroku「プロセスはステータス137で終了しました」node.jsアプリ

最近、同様のトピックについて質問を投稿しました。 URLのすべてを大幅に見直したところ、前回と同じことが起こりました。すべてをデプロイし、heroku local webを使用して実行できました。 Web dynoにアクセスすると、アプリケーションエラーが発生したと表示され、ログを確認しました。これが言ったことです(私はgitworkで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の初心者なので、どんな助けにも感謝します。答えを見つけるために必要な情報を提供します。

ログを確認しましたところ、at=error code=H10 desc="App crashed"uncaught Exceptionを持っているということなので、コードを確認する必要があります。

herokuでmongodbを使用する場合は、アプリケーションにmongodb addonを追加してみてください。あなたはドキュメントを見つけることができます ここ

使用するポートではなく、process.env.PORTを使用してみてください。

それでも問題が解決しない場合は、このコマンドheroku run bashを使用してみてください。このコマンドを使用すると、heroku環境に移行してサーバーを起動できます。

8
chenkehxx

Nodeアプリをherokuでホストしているときに同じエラーが発生しました

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

したがって、process.env.PORT || 8080は、環境変数PORTにあるものは何でも、何もない場合は8080を意味します。

そして、set port変数を次のように設定します

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

アプリが実際にサーバーを起動する前にタイムアウトしているようです:

アプリの起動タイムアウト

プロセスで制作資産を縮小するのに時間がかかりすぎていませんか?

1
mikermcneil

これは間違いなく移植の問題です。次のようなものを使用してください:

var port = process.env.PORT || 3002

ポートを指定します。

それで全部です。

0
Ifeanyilawrence