Cloudflare PagesでpnpmとNode.jsのバージョンを指定する
パッケージマネージャーを npm から pnpm へ移行し、あわせて Node.js のバージョンも最新版(v24.13.0)を使用するように更新した。また、nodenv から mise を使用してバージョンを管理するようにした。これらの対応後に、Cloudflare Pages の CI がコケた。
Cloudflare Pages のビルドログを見ると、プロジェクトで使用したいバージョンと異なるバージョンを使用しようとしていることが分かる。
ERR_PNPM_UNSUPPORTED_ENGINE Unsupported environment (bad pnpm and/or Node.js version)Your pnpm version is incompatible with "/opt/buildhome/repo".Expected version: 10.28.1Got: 10.11.1...ERR_PNPM_UNSUPPORTED_ENGINE Unsupported environment (bad pnpm and/or Node.js version)Your Node version is incompatible with "/opt/buildhome/repo".Expected version: 24.13.0Got: v22.16.0これは Cloudflare がサポートしているバージョンが使用されている。 Build image | Cloudflare Docs
- Cloudflare Pages のダッシュボードへ移動
- 設定 > 変数とシークレットにある追加ボタンをタップ
PNPM_VERSIONとNODE_VERSIONを追加し、値をプロジェクトのバージョンにする- 再度 CI を実行する
引っ掛かりポイント
Section titled “引っ掛かりポイント”- プロダクション・プレビューで環境変数が共有されるわけではないため、2つの環境で同じ変数・値を追加する必要がある
- ただし、ビルドの設定は共通
- 今までは
.node-versionが存在したため Cloudflare 側がよしなに Node.js のバージョンを変更してくれていた pnpm-lock.yamlが存在すると、Cloudflare 側がよしなに pnpm を使用してパッケージをインストールしてくれる- ビルドコマンドはユーザーが設定する必要はある
Cloudflare がそのうち mise.toml ファイルを見てくれる日がくることを願う。