Corepack「This project is configured to use」の原因と直し方
This project is configured to use yarn は、package.json の packageManager に書かれたツールで実行すれば直る。
Corepack は指定と違うパッケージマネージャーの実行を止める。
指定を変えるなら corepack use を使う。
公開: 更新:
要約
corepack enable した環境で、Yarn を指定したプロジェクトで pnpm install を実行すると、pnpm が動く前に止まった。
Node.js 22.23.3(Corepack 0.36.0)では次のように出て、終了コードは 1 だった。
Node.js 20.20.2(Corepack 0.34.6)でも同じ文言だった。
$ pnpm install
This project is configured to use yarn because /home/user/app/package.json has a "packageManager" fieldThis project is configured to use yarn は、package.json の packageManager で指定されたツールと、実行したツールが違うという意味だ。
{
"name": "app",
"packageManager": "yarn@4.9.2"
}Corepack は pnpm や yarn のコマンドを自分で受け取り、プロジェクトの packageManager を見てから本物を起動する。
指定と違うツールが呼ばれると、ここで止める(README(新しいタブで開く))。
同じプロジェクトで yarn --version は 4.9.2 を返し、npm --version は止められずに動いた。
解決策
1. 指定されたツールで実行する
yarn installプロジェクトがそのツールを前提にしているなら、これが正しい直し方だ。
ロックファイルもそのツールの形式になっている。
2. ツールを切り替えるなら packageManager を書き換える
corepack use pnpm@10.12.1corepack use は package.json の packageManager を "pnpm@10.12.1+sha512.…" のようにハッシュ付きで書き換え、インストールまで行った。
その後は pnpm --version が 10.12.1 を返した。
3. 一度だけ別のツールで動かす
COREPACK_ENABLE_STRICT=0 corepack pnpm@10.12.1 --versionCOREPACK_ENABLE_STRICT=0 を付けると Corepack は止めなくなり、上のコマンドは 10.12.1 を返した。
ただし、版を付けずに COREPACK_ENABLE_STRICT=0 pnpm --version とした場合、そのとき最新だった pnpm 12.14.0 が起動し、pnpm 自身が ERR_PNPM_OTHER_PM_EXPECTED(This project is configured to use yarn)で止めた。
Corepack を外してもツール側が同じ確認をする版があるので、恒久的な回避には使わない。
よくある原因
- 指定と違うツールで実行した:
yarn@…のプロジェクトでpnpmを、pnpm@…のプロジェクトでyarnを実行している。corepack use pnpm@10.12.1で書き換えた後は、yarn --versionが逆にThis project is configured to use pnpmで止まった。 - 親の
package.jsonが効いている: サブディレクトリで実行しても、上の階層のpackage.jsonのpackageManagerが使われた。
エラー文のパスがそのpackage.jsonを指す。 - 切り替えた後に指定が残っている: ロックファイルだけ入れ替えて、
packageManagerを古いままにしている。