環境
- 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' }, }