🔧

NestJS アプリを Heroku にデプロイしたときに発生する 503エラーを解消する

2022/03/14に公開

やること

下記問題の解決

  • NestJSのデフォルトプロジェクトをHerokuにデプロイすると503エラーになってしまう

前提

  • Node.js がすでにインストールされていること
  • Heroku のアカウントを作成済みであること
  • Heroku CLI がすでに利用できるようになっていること

NestJSのデフォルトプロジェクトの生成

$ cd /path/to/somewhere/work_dir
$ npm i -g @nestjs/cli
$ mkdir <something app name here>
$ cd $_
$ npx nest new .
$ git add .
$ git commit -m 'nest new'
$ npm run start

これで http://localhost:3000/ へアクセスしたら Hello World! と表示されます。

Heroku設定

以下のコマンドでアプリケーションを作ります。

$ heroku login
$ heroku create <something app name here>

これをこのままデプロイしたらビルドは通るものの503エラーになります。

アプリケーション改修

適当に作業ブランチを切って以下の修正を行います。

ポート番号の参照方法を修正

main.ts
import { AppModule } from './app.module';
 
 async function bootstrap() {
   const app = await NestFactory.create(AppModule);
-  await app.listen(3000);
+  await app.listen(process.env.PORT || 3000);
}
bootstrap();

Procfile の追加

Procfile
web: npm run start:prod

デプロイ

前章の改修をマージしてデプロイを実施します。

$ git push heroku master

ローカルと同じように Hello World! が表示されれば成功です。

以上です。

Discussion