1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pnpm10.x.x でVercelへデプロイした場合のバージョン不一致エラーを解決する方法

Last updated at Posted at 2025-04-02

結論 (解決方法だけ知りたい方向け)

  • package.jsonpackageManager フィールドを追加
  • Vercelの環境変数に ENABLE_EXPERIMENTAL_COREPACK: 1 を設定

はじめに

パッケージマネージャーとして pnpm を使用している場合、Vercelが内部で使っている pnpm のバージョンとあなたのプロジェクトが要求するバージョンが一致しないことで、一見不可解なエラーが発生します。

本記事では、実際に遭遇したエラーとその原因を明らかにし、Vercelの環境変数を活用してシンプルに解決する方法を詳しく解説します。

Error: Detected pnpm "9.x" is not compatible with the engines.pnpm "10.6.3" in your package.json.
Either enable corepack with a valid package.json#packageManager value
(https://vercel.com/docs/deployments/configure-a-build#corepack) or remove your package.json#engines.pnpm.

原因

このエラーは、プロジェクトの package.json 内で指定された pnpm のバージョンと、Vercelが使用している pnpm のバージョンが一致しない場合に発生します。

Vercel側が デフォルトで pnpm@9.x を使ってビルドしようとするため、要求されているpnpmのバージョンと一致せず処理を中断してしまいます。

このような状況では、corepack を使って指定バージョンの pnpm を自動インストール・管理する方法が有効ですが、
Vercelでは corepack がデフォルトで無効になっているため、環境変数で明示的に有効化してやる必要があります。

解決策

この問題を解決するためには、Vercelの環境変数に ENABLE_EXPERIMENTAL_COREPACK を設定し、pnpm のバージョン管理を corepack に委ねる方法があります。

手順

1. package.jsonpackageManager フィールドを追加する

package.json に以下のフィールドを追加し、使用したい pnpm のバージョンを指定します。

{
  "packageManager": "pnpm@10.6.3"
}

これにより、corepack が指定されたバージョンの pnpm を使用するようになります。

2. Vercelの環境変数を設定する

Vercelのダッシュボードで、対象のプロジェクトの設定に移動し、以下の環境変数を追加します。

Key Value
ENABLE_EXPERIMENTAL_COREPACK 1

この設定により、Vercelのビルド環境で corepack が有効になり、package.jsonpackageManager フィールドで指定された pnpm バージョンが使用されます。

3. 変更をデプロイする

上記の変更をコミットし、Vercelにプッシュすることで、デプロイ時に指定した pnpm バージョンが使用されるようになります。

注意点

  • engines.pnpm フィールドの削除

    • package.json 内に engines.pnpm フィールドがある場合、corepack の動作と競合する可能性があるため、削除することを推奨します。
      .
  • corepack の有効化

    • ローカル環境でも同様の設定を行う場合、以下のコマンドで corepack を有効化し、指定したバージョンの pnpm を準備する必要があります。
    corepack enable
    corepack prepare pnpm@10.6.3 --activate
    

参考文献

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?