かなり単純なnode.jsエクスプレスアプリをヒーローにプッシュして動作させることができません。それは突然クラッシュする。は私を与える:期待通りに実行Node.jsエクスプレスアプリがヒーローでクラッシュする
web : node server.js
worker: node workers/match.js
労働者を、:
2017-05-23T04:43:08.156660+00:00 app[api]: Scaled to [email protected]:Free [email protected]:Free by user [email protected]
2017-05-23T04:43:24.388293+00:00 heroku[web.1]: Starting process with command `: node server.js`
2017-05-23T04:43:26.207926+00:00 heroku[web.1]: Process exited with status 0
2017-05-23T04:43:26.220393+00:00 heroku[web.1]: State changed from starting to crashed
2017-05-23T04:43:26.221461+00:00 heroku[web.1]: State changed from crashed to starting
2017-05-23T04:43:43.343050+00:00 heroku[web.1]: Starting process with command `: node server.js`
2017-05-23T04:43:44.751608+00:00 heroku[web.1]: Process exited with status 0
2017-05-23T04:43:44.762870+00:00 heroku[web.1]: State changed from starting to crashed
2017-05-23T04:43:46.400260+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=yetie.herokuapp.com request_id=d7913d1e-64ab-497b-a59d-fda9454d6e69 fwd="81.56.46.53" dyno= connect= service= status=503 bytes= protocol=https
2017-05-23T04:43:46.899099+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=yetie.herokuapp.com request_id=1fdc61fb-eebe-40a2-8b0a-a71b09f7ff10 fwd="81.56.46.53" dyno= connect= service= status=503 bytes= protocol=https
私は含まれていProcfileを持っています。 server.jsは次のようになります。
const express = require('express');
const app = express();
app.use(express.static(__dirname + '/testheroku'));
app.listen(process.env.PORT || 8080, function(){
console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});
で/ testheroku DIRシングル "Hello World" のhtmlファイルがあります。
私はheroku local web
とローカルで実行すると、私はnode server.js
、その後heroku run bash
でHerokuのダイナモに接続してそれを実行し、それが適切に「Hello World」のhtmlファイルを取得wget http://localhost:xxxx
を行う場合には、動作します。
しかし、私がアプリケーションをビルドするときに英雄が私に与えるURLにアクセスしようとすると、私は上記のクラッシュログを取得します。要求された場合、私はpackage.jsonファイルを含むことが
node --version => v6.10.3
npm --version => 3.10.10
が、それは(より複雑なangular2アプリに基づいて)かなり長いですし、それがコンパイルされます。
ノードとNPMのバージョンでは、ローカルおよびHerokuの上で同じです適切にロカイとヒロクの両方。そして、私がnode server.js
をdyno thru bashに接続して実行すると、問題はそこにあるはずです。
stackoveflowまたはelswereで見つかったほとんどの回答はポートの問題を示唆し、私がしたapp.listen(process.env.PORT || 8080)
のトリックを使用することを提案しています。では、私はここで何が欠けていますか?
これは機能しています。 Procfileは、package.jsonの開始スクリプトよりも優先されます。 Procfileから 'web:node server.js'という行を削除しました。労働者に任せてください。 Herokuはまだ2つのプロセスタイプを検出します。 1つの 'web:npm start'と1つの' worker:node workers/match.js'そして、npm startがProcfileからの削除された行とまったく同じことを行っても動作します。私のserver.jsファイルをそのまま残しました。 –