次の行でnode.jsサーバーを起動して、ポートを設定しました。
app.set('port', process.env.PORT || 8080);
つまり、ローカルで実行する場合と同様に、PORT環境変数を読み取るか、デフォルトで8080に設定する必要があります。どちらもHerokuでは発生せず、サーバーは常にデフォルトのポート80を使用します。それを変更する方法はありますか?
heroku config
PORT: 8080
できません。 Herokuは、バインドすることになっているPORT変数を設定し、tcp/80でリッスンします。
次のようにherokuによって開かれたポートを使用する必要があります。
port = process.env.PORT || 80
何らかの方法でまだ設定されていない場合は、ポートを80に設定します
HerokuはWebアプリを他のアプリと同様に扱い、リスニングポートを直接割り当てることはできません。 WebサーバーにはHerokuによって動的ポートが割り当てられますが、それにアクセスするには、デフォルトポート(80)を使用する必要があります。
Herokuでは、アプリは完全に自己完結型であり、実行環境へのWebサーバーのランタイムインジェクションに依存せずに、Webに面したサービスを作成します。各Webプロセスは単純にポートにバインドし、そのポートから着信する要求をリッスンします。バインドするポートは、HerokuによってPORT環境変数として割り当てられます。
Herokuとの契約は、プロセスがポートにバインドしてリクエストを処理することです。 Herokuのルーターは、適切なポートのプロセスにHTTPリクエストを送信します。
私の場合、herokuはデフォルトのHTTPSポート443
でリッスンしており、heroku config:get PORT
を介して表示されませんでした。