Rumah  >  Artikel  >  hujung hadapan web  >  ERR_PNPM_BAD_PM_VERSION Projek ini dikonfigurasikan untuk menggunakan vX pnpm. pnpm semasa anda ialah vY

ERR_PNPM_BAD_PM_VERSION Projek ini dikonfigurasikan untuk menggunakan vX pnpm. pnpm semasa anda ialah vY

WBOY
WBOYasal
2024-08-19 17:08:03652semak imbas

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

Masalahnya

Jika anda mula menggunakan corepack untuk mengurus versi pengurus pakej anda, anda mungkin telah terjumpa kes dua perintah sangat serupa yang mengembalikan hasil yang berbeza :

# 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

Anda mungkin telah mencuba (seperti saya) untuk "membetulkan projek" dengan menjalankan:

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

Tetapi hasilnya akan tetap sama.

analisis

Apakah isu di sini? Mengapakah kita telah menguatkuasakan v9.7.0 di mana-mana, tetapi arahan bara menggunakan v9.1.2 entah bagaimana?

Jika anda menjalankan semakan versi dari dalam projek anda, anda pasti akan mendapat versi yang betul:

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

Tetapi jika anda menjalankan arahan yang sama dari tempat lain (rumah anda) direktori, anda akan mendapat versi "salah":

> cd ~
> pnpm --version
9.1.2

Yang merupakan petunjuk. Sekarang mari kita lihat dari mana datangnya bara api dalam arahan pemasangan bara api anda:

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

Aha! Jadi ia adalah pemasangan global ember-cli saya dan bukan projek satu (yang tinggal di ~/my-project/node_modules/ember-cli/bin/ember).

Penyelesaian

Tempatan

Jika anda ingin menggunakan dalam projek versi terpasang ember-cli, anda boleh melakukannya dengan melaksanakan arahan ember melalui pnpm exec:

> pnpm exec ember install ember-leaflet

Global

Atau anda boleh menyematkan versi global pnpm kepada versi yang sepadan dengan projek anda:

> 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 diuruskan oleh corepack

Jika anda ingin menyelesaikan ketidakpadanan versi global, anda mungkin akan menghadapi isu di mana pnpm dipasang daripada sumber yang berbeza daripada corepack dan menukar versi dalam corepack tidak akan mempengaruhi perkara versi dilaksanakan kerana pemasangan lain akan diutamakan.

Saya tidak mempunyai penyelesaian yang mudah untuk ini kerana ia sangat bergantung pada situasi anda dan persediaan yang anda mahu jalankan, tetapi jika anda (seperti saya) mahu terus menggunakan corepack untuk menguruskan anda versi pnpm anda boleh cuba ikuti:

  1. buat nyahpasang pnpm
  2. npm nyahpasang pnpm -g
  3. Ikuti dokumen pnpm yang menyahpasang
  4. Alih keluar sebarang rujukan PNPM_HOME daripada konfigurasi shell anda (~/.zshrc)
  5. Muat semula konfigurasi shell anda (~/.zshrc)
  6. pemasangan corepack --global pnpm@9.7.0
  7. Semak versi yang sekarang seluruh dunia tersedia dengan menjalankan dalam direktori utama anda: pnpm --version

Shenanigans direktori rumah

Ia mungkin berlaku apabila anda berada dalam arahan pnpm --version direktori utama anda masih menunjukkan beberapa versi lain daripada versi global anda. Kenapa begitu? Well corepack menggunakan medan packageManager dalam package.json anda untuk menentukan sama ada ia harus menggunakan versi lokal dan bukannya versi global. Dan mungkin direktori rumah anda mengandungi fail package.json dan oleh itu ia kelihatan seperti folder projek. Alih keluar fail ini sahaja, kemungkinan besar anda menciptanya secara tidak sengaja dan tidak mahu package.json dalam direktori ~.


Ilustrasi yang dibuat oleh ChatGPT v4o menggunakan gesaan: "Hamster keliru melihat spageti kod sumber, cuba memahaminya --ar 16:9"

Atas ialah kandungan terperinci ERR_PNPM_BAD_PM_VERSION Projek ini dikonfigurasikan untuk menggunakan vX pnpm. pnpm semasa anda ialah vY. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Penyepaduan TAWK.TO & NEXTjsArtikel seterusnya:Penyepaduan TAWK.TO & NEXTjs