web-dev-qa-db-ja.com

Herokuは、ローカルホストで動作するWebアプリを開こうとすると503を提供します

Herokuにデプロイしようとしていますが、ローカルホストで実行されていても503を取得します。私はプログラミングが初めてなので、サーバーが正しくセットアップされているかどうか興味があります。 Googleで数週間かけて数え切れないほどの時間をGoogleに費やしてきたので、だれかがどこを見たり提案をしたりするかについて正しい方向に向けてくれることを願っています。

私の主な質問は、サーバーを正しくセットアップしたかどうかです。リスナーがherokuで動作するかどうかはわかりませんが、.getは、localhostが最初にセットアップされたときにlocalhostでのデバッグに使用されます。

また、私の完全なプロジェクトはここから入手できます:

https://github.com/dirkdir/DerekDevSite

var express = require('express');
var app = express();
var path = require('path');


app.use(express.static(path.join(__dirname, 'public')));


app.get('/json', function(req, res) {
    console.log("GET the json");
    res
        .status(200)
        .json( {"jsonData" : true} );
});

app.get('/file', function(req, res) {
    console.log("GET the file");
    res
        .status(200)
        .sendFile(path.join(__dirname, 'app.js'));
});



    var server = app.listen(process.env.PORT || 5000), function() {
        var port = server.address().port;
        console.log("Express is working on port " + port);
});

ログ:

2017-04-24T20:04:43.755866 + 00:00 app [web.1]:Module._compile(module.js:542:28)2017-04-24T20:04:43.755867 + 00:00 app [web。 1]:Object.Module._extensions..js(module.js:579:10)2017-04-24T20:04:43.755868 + 00:00 app [web.1]:Module.load(module.js: 487:32)2017-04-24T20:04:43.755868 + 00:00 app [web.1]:at tryModuleLoad(module.js:446:12)2017-04-24T20:04:43.755869 + 00:00 app [ web.1]:Function.Module._load(module.js:438:3)2017-04-24T20:04:43.755869 + 00:00 app [web.1]:Module.runMain(module.js:604 :10)2017-04-24T20:04:43.755870 + 00:00 app [web.1]:実行中(bootstrap_node.js:393:7)2017-04-24T20:04:43.755871 + 00:00 app [web .1]:起動時(bootstrap_node.js:150:9)2017-04-24T20:04:43.846556 + 00:00 heroku [web.1]:状態が開始からクラッシュに変更2017-04-24T20:26:31.826133 +00:00 heroku [router]:at = error code = H10 desc = "App crashed" method = GET path = "/" Host = derekdyerdev.herokuapp.com request_id = 609ef253-0a56-41ac-b877-1fb242f6f4e1 fwd = " 69.36.89.218 "dyno = connect = service = status = 503 byt es = protocol = https 2017-04-24T20:26:32.319732 + 00:00 heroku [router]:at = error code = H10 desc = "App crashed" method = GET path = "/ favicon.ico" Host = derekdyerdev。 herokuapp.com request_id = f2a34e62-9765-

9
Derek Dyer

34ファイルのapp.js行のブラケットが間違った場所にあります。関数はコールバックであるため、params内にある必要があります。

最後のブロックをこれに変更します:

var server = app.listen(process.env.PORT || 5000, function () {
  var port = server.address().port;
  console.log("Express is working on port " + port);
});

Procfileも次のように変更しました。

web: node app.js

変更した後、ローカルで実行でき、テストするためにHerokuに展開しましたが、正常に動作します:)

5
Alicia

これは誰かに役立つかもしれません。私の最初のプロフィールコンテンツはこれでした:

web : node server.js

そして、これに変更した後、それは働いた:

web:node server.js

「ウェブ」と「:」記号の間のスペースが問題でした。

1
Renil Joseph

同様の問題がありました。 Herokuにデプロイされたときではなく、localhostで動作しました。私の問題?私はプロジェクト(node_modulesも)のクローンを作成しましたが、package.jsonにはExpressやMinimistなどがなかったため、明らかに失敗しました。

Tip:展開するときは、展開プロセス全体で何が起こっているかを確認できるように、すぐにログを表示します。失敗した後にログを表示すると、ログの終わりのみが表示されます...

最後に、適切なポートでリッスンするようにしてください。私はこれを行います(他の人もそうです)

var serverPort = 8080;
. . .
var port = process.env.PORT || serverPort;
1
James

Herokuアプリでも同じエラーが発生しました。 corsをローカルにインストールし、app.jsファイルのみをリポジトリにプッシュして、herokuにデプロイしました。実際、エラーはcorsパッケージがpackage.jsonで宣言されていなかったため(app.jsをgithubにプッシュしただけです)、herokuがアプリを呼び出そうとしたときにcorsが定義されていないためエラーが発生しました。

ポイントは、package.jsonが更新されているかどうかも確認することです。

0
EAzevedo