ホームページ  >  記事  >  ウェブフロントエンド  >  ERR_PNPM_BAD_PM_VERSION このプロジェクトは、pnpm の vX を使用するように構成されています。現在の pnpm は vY です

ERR_PNPM_BAD_PM_VERSION このプロジェクトは、pnpm の vX を使用するように構成されています。現在の pnpm は vY です

WBOY
WBOYオリジナル
2024-08-19 17:08:03760ブラウズ

ERR_PNPM_BAD_PM_VERSION This project is configured to use vX of pnpm. Your current pnpm is vY

問題

パッケージ マネージャー のバージョンを管理するために corepack を使い始めた場合、2 つの非常によく似たコマンドが異なる結果を返すという非常に奇妙なケースに遭遇したかもしれません。 :

# Calling `pnpm` directly, this works perfectly fine:
> pnpm install
Lockfile is up to date, resolution step is skipped
Already up to date
Done in 1.5s

# Calling `pnpm` through `ember-cli`, this one fails:
> ember install ember-leaflet
?  Installing packages... This might take a couple of minutes.
Command failed with exit code 1: pnpm add --save-dev ember-leaflet
 ERR_PNPM_BAD_PM_VERSION  
This project is configured to use v9.7.0 of pnpm.
Your current pnpm is v9.1.2

あなたも (私と同じように) 次のコマンドを実行して「プロジェクトを修正」しようとしたかもしれません:

> corepack prepare pnpm@9.7.0 --activate
> corepack use pnpm@9.7.0
> corepack install --global pnpm@9.7.0

しかし結果は同じです。

分析

ここで何が問題になっているのでしょうか?どこでも v9.7.0 を適用しているのに、ember コマンドではなぜか v9.1.2 が使用されるのはなぜですか?

プロジェクト内からバージョンチェックを実行すると、確かに正しいバージョンが得られます:

> cd ~/my-project
> pnpm --version
9.7.0

しかし、別の場所 (ホーム) ディレクトリから同じコマンドを実行すると、「間違った」バージョンが取得されます。

> cd ~
> pnpm --version
9.1.2

これが手がかりです。ここで、ember install ember-leaflet コマンドの残り火がどこから来たのかを見てみましょう:

> cd ~/my-project
> which ember
/Users/michal/Library/pnpm/ember

ああ!したがって、これは私の グローバル ember-cli インストールであり、プロジェクト (~/my-project/node_modules/ember-cli/bin/ember に存在します) ではありません。

解決

地元

プロジェクトでインストールされたバージョンの ember-cli で を使用したい場合は、pnpm exec:
経由で ember コマンドを実行します。

> pnpm exec ember install ember-leaflet

グローバル

または、pnpm のグローバル バージョンをプロジェクトに一致するバージョンに固定することもできます。

> corepack install --global pnpm@9.7.0
> pnpm --version
9.7.0
> cd ~/my-project
> ember install ember-leaflet
?  Installing packages... This might take a couple of minutes.
pnpm: Installed leaflet@^1.9.3
Installed addon package.

corepack によって管理される pnpm

グローバル バージョンの不一致を解決したい場合、pnpm が corepack とは異なるソースからインストールされ、corepack 内でバージョンを変更しても何の影響も受けないという問題に遭遇する可能性があります。このバージョンは、他の インストールが優先されるように実行されます。

これに対する単純な解決策はありません。それは、状況と実行したいセットアップに大きく依存しますが、(私と同じように) コアパックを管理に使用し続けたい場合は、以下を試してみるとよい pnpm バージョン:

  1. brew uninstall pnpm
  2. npm uninstall pnpm -g
  3. pnpm のアンインストールに関するドキュメントに従ってください
  4. シェル構成 (~/.zshrc) から PNPM_HOME の参照を削除します
  5. シェル構成 (~/.zshrc) をリロードします
  6. corepack install --global pnpm@9.7.0
  7. ホーム ディレクトリで実行して、現在グローバルで利用可能なバージョンを確認します: pnpm --version

ホームディレクトリの悪ふざけ

ホーム ディレクトリにいるときに、pnpm --version コマンドでグローバル バージョンとは別のバージョンが表示されることが 起こる可能性があります。何故ですか? corepack は、package.json の packageManager フィールドを使用して、グローバル バージョンの代わりに ローカル バージョンを使用するかどうかを決定します。また、ホーム ディレクトリに package.json ファイルが含まれているため、プロジェクト フォルダーのように見える可能性があります。このファイルを削除するだけです。おそらく、このファイルは誤って作成されており、~ ディレクトリに package.json を入れたくありません。


ChatGPT v4o がプロンプトを使用して作成した図:「ソース コードのスパゲッティを見て、それを理解しようとしている混乱したハムスター --ar 16:9」

以上がERR_PNPM_BAD_PM_VERSION このプロジェクトは、pnpm の vX を使用するように構成されています。現在の pnpm は vY ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。