動かざることバグの如し

近づきたいよ 君の理想に

Nextjsで複数台にデプロイするとJSが404エラーになる問題

環境

  • Nextjs 14

Nextjs複数台に同時にデプロイできない問題

Nextjsを使用している際に、複数のサーバーに同時にデプロイしようとすると問題が発生することがある。

具体的には、ビルドIDが各サーバーで異なるため、JSのURLが変わってしまう。よってブラウザを何回かリロードしているとJSが404でエラーになる。

これは、NextjsがデフォルトでランダムなビルドIDを生成するためであり、複数のサーバー間でビルドIDを統一しないと、クライアントサイドでのキャッシュの不整合など、予期せぬ問題が発生することがある。

この問題は、特に大規模なアプリケーションや高可用性を求める環境で顕著になり、デプロイの効率性やアプリケーションの安定性に影響を与える。

解決策

next.config.jsに以下のようにgenerateBuildIdを追記する。いわゆるhashシード的なもので、ここでは「my-build-id」と固定の文字列だが運用する場合はgitハッシュがベストだろう。

module.exports = {
  generateBuildId: async () => {
    // You can, for example, get the latest git commit hash here
    return 'my-build-id'
  },
}

参考リンク