4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.js 14.1.0 Production BuildでBUILD_ID or sever.jsなしエラーの解消

Last updated at Posted at 2024-02-29

Next.js でDockerを使用して本番環境用にイメージを作成すると、BUILD_IDがない、もしくはsever.jsがないといわれる場合の対処法です。

エラー

[Error: ENOENT: no such file or directory, open '/app/.next/BUILD_ID'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/app/.next/BUILD_ID'
}

Dockerの起動時に、Dockerfileに以下のどちらかで書いてる場合に上記のエラーとなります。

CMD ["yarn", "start"]

or

CMD ["node", "server.js"]

対処

これは、.nextディレクトリが起動時に存在しないため起こります。
先にbuildすると、.nextディレクトリが作成されて、BUILD_IDとserver.jsが作成されます。

なので、先にbuildしてから、startします。

CMD sh -c "yarn build && yarn start"

CMD sh -c "yarn build && node .next/standalone/server.js"

next.config.jsの設定

以下の追記が必要です

  • output: 'standalone' ← standaloneモードにする場合
  • BUILD_IDをユニークにしたい場合
module.exports =   {
  output: 'standalone',
  reactStrictMode: true,
  generateBuildId: async () => {
    // ここは色々方法はある
    return process.env.VERSION || Date.now() + Math.round(Math.random() * 2441139);
  },
}



補足

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?