ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

Next.jsのoutputStandalone:trueで、pages/_middleware.ts があるとビルドに失敗するのはnext@12.0.10に上げたら直る

f:id:rasukarusan:20220223113949j:plain
Docker イメージを軽くするための設定でoutputStandalone: trueにしていた。

module.exports = {
  experimental: {
    outputStandalone: true,
  },

しかしpages/_middleware.tsがあると下記のエラーが出てnext buildに失敗する。

> Build error occurred
[Error: ENOENT: no such file or directory, open '/Users/web/.next/server/pages/_middleware.js.nft.json'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/Users/web/.next/server/pages/_middleware.js.nft.json'
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Next.js のバージョンを 12.0.10 にすれば直る

yarn add next@latest

package.json

"dependencies": {
  "next": "^12.0.10",

修正 PR はおそらくこれ。 github.com

next@12.0.10にすると node-fetch が消えるので手動で入れ直す

next@12 の時点ではnode-fetch@2.6.1が依存としてインストールされていたが、next@12.0.10では削除されていた。
アプリ内で node-fetch を import している場合は入れ直す必要がある。

yarn add node-fetch@2.6.1