Rumah >hujung hadapan web >tutorial js >ERR_PNPM_BAD_PM_VERSION Projek ini dikonfigurasikan untuk menggunakan vX pnpm. pnpm semasa anda ialah vY
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.
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).
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
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.
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:
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!