先日、HerokuにNode.jsアプリをデプロイした時につまづいた事があったのでメモしておく。

Node.jsで構築したサーバーをローカル環境で実行したところ、問題なく正常動作していた。

しかしHerokuに全く同じファイルをデプロイした途端、エラーで何も表示されない。

原因はコード内の下記コードに問題があった。

server.listen(3000);

Herokuでは動的にポート番号を生成するようなので、下記のようにポート指定を変更しなければならないようだ。

server.listen(process.env.PORT || 3000);

簡単に説明すると、デフォルトではアプリの実行環境の「PORT」という環境変数で設定されているポート番号をlistenし、環境変数が見つからない場合は3000番のポートをlistenする、といったところだ。

ポート指定をこのように修正すると、ローカル環境、Heroku本番環境ともに正常に動作するようになる。