😩

Node.js v20 で GitHubActions から Vercel へのデプロイがコケた

2024/04/08に公開

つい先日(2024.3.25) に Vercel の Node.js v20 サポートが GA になった
Node.js v20 LTS is now generally available – Vercel

それに伴って Node.js v18 を v20 にアップデートしたらデプロイがコケるようになった

環境

利用技術 バージョン
Next.js v13
Node.js v20
vercel-action v25

Next.js プロジェクトを GitHubActions から Vercel にデプロイしている

発生したエラー

GitHubActions

Error: The process '/opt/hostedtoolcache/node/20.12.0/x64/bin/npx' failed with exit code 1

Vercel

Error: Found invalid Node.js Version: "20.x". Please set "engines": { "node": "18.x" } in your `package.json` file to use Node.js 18.

Vercel で Node.js v20 が選択できないと言われる🥺

解決方法

GitHubActions の該当のデプロイワークフローファイルで、利用する Vercel CLI のバージョンを v33.6.1 以降を指定する

deploy.yml
 uses: amondnet/vercel-action@v25
 with:
+  vercel-version: latest

現象

Deployment doesn't respect choice of node v20 based on engines.node and errors out · Issue #10850 · vercel/vercel

この ISSUE の通り、 Vercel CLI で修正されていた
Vercel CLI を利用してデプロイしている場合はそのまま CLI を v33.6.1 以上にアップデートして治る

あとがき

GitHubActions 経由だと Vercel CLI を意識しなくてよくなるため、単純にハマりポイントだった。

Vercel の公式ドキュメント Using the Node.js Runtime with Serverless Functions にある通り、package.jsonengines#nodeを参照して Node.js のバージョンが決定する。

ドキュメントには当然 CLI のバージョンで挙動が変わる(バグの)ことは書かれていないため、沼ってた。
Node.js v20 にアップデートする際は気をつけられたし。

DeNA Engineers

Discussion