首頁 > web前端 > js教程 > ERR_PNPM_BAD_PM_VERSION 此專案配置為使用 pnpm 的 vX。您目前的 pnpm 是 vY

ERR_PNPM_BAD_PM_VERSION 此專案配置為使用 pnpm 的 vX。您目前的 pnpm 是 vY

WBOY
發布: 2024-08-19 17:08:03
原創
779 人瀏覽過

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

問題

如果您開始使用corepack 來管理套件管理器的版本,您可能會遇到一個非常奇怪的情況,兩個非常相似命令返回不同的結果 :

# 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 指令中的 ember 是從哪裡來的:

> 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.
登入後複製

pnpm 由 corepack 管理

如果您想解決全域版本不符問題,您可能會遇到一個問題,即pnpm是從與corepack不同的來源安裝的,並且更改corepack中的版本不會影響什麼版本執行時其他安裝優先。

我沒有一個簡單的解決方案,因為它很大程度取決於您的情況以及您想要運行的設置,但是如果您(像我一樣)只想繼續使用corepack 來管理您的可以嘗試以下pnpm 版本:

  1. brew 卸載 pnpm
  2. npm uninstall pnpm -g
  3. 依照卸載 pnpm 文件進行操作
  4. 從 shell 配置 (~/.zshrc) 中刪除 PNPM_HOME 的所有引用
  5. 重新載入您的 shell 配置 (~/.zshrc)
  6. corepack install --global pnpm@9.7.0
  7. 透過在您的主目錄中執行來檢查現在全域可用的版本:pnpm --version

主目錄惡作劇

可能發生這樣的情況:當您在主目錄中時,pnpm --version 命令仍然顯示某個其他版本而不是您的全域版本。這是為什麼? corepack 使用 package.json 中的 packageManager 欄位來決定是否應該使用 local 版本而不是 global 版本。您的主目錄可能包含 package.json 文件,因此它看起來像一個專案資料夾。只需刪除此文件,您很可能意外創建了它,並且不希望 package.json 位於 ~ 目錄中。


ChatGPT v4o 使用提示製作的插圖:「困惑的倉鼠看著原始碼的意大利麵,試圖理解它 --ar 16:9」

以上是ERR_PNPM_BAD_PM_VERSION 此專案配置為使用 pnpm 的 vX。您目前的 pnpm 是 vY的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板