はじめに
Next.js(14)でApp Roterやzero runtime CSSを使用してサイトを作成してる。
問題点
Next.jsのプロジェクトをCloudflare Pagesでデプロイしようとした失敗する。
以下のログが出力された
➤ YN0000: ┌ Post-resolution validation
➤ YN0028: │ The lockfile would have been modified by this install, which is explicitly forbidden.
➤ YN0000: └ Completed
➤ YN0000: Failed with errors
Error: Exit with error code: 1
at ChildProcess.<anonymous> (/snapshot/dist/run-build.js)
at Object.onceWrapper (node:events:652:26)
at ChildProcess.emit (node:events:537:28)
at ChildProcess._handle.onexit (node:internal/child_process:291:12)
Failed: build command exited with code: 1
Failed: error occurred while running build command
解決策
バージョンを指定しない場合はYarn v2(Berry)で実行されてまう。
そのため、Cloudflareの環境変数にYarnのバージョンを1で指定すると問題なくデプロイされた。
まとめ
yarn1のyarn.lockファイルをyarn2でyarn install
すると自動的にyarn2用の形式に書き変わってしまうため、それを防ぐためにデプロイが落ちたのが原因だった。
バージョンを1で固定することで、変更が入らずデプロイできるようになった。