Bagaimana cara saya memperbaiki nPM UNMET PEER DEPENDENCY peringatan?

223

Saya menggunakan Windows 10, dengan Node 5.6.0 dan npm 3.6.0. Saya mencoba menginstal angular-material dan mdi ke folder kerja saya. NPM menginstal kesalahan -bahan mdi sudut- dengan:

+-- angular@1.5.0

+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0

+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0

+-- angular-material@1.0.6

+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57

npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json' 

npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.

Bagaimana cara mengatasi ini agar AngularJS Material dan MDI diinstal?

Reza
sumber
Apakah jenis kesalahan ini menimbulkan masalah?
blackHawk
Bukan untuk Reza, jadi ini sudah terlambat, tapi untuk yang lain ... Coba ini: npm view angular-material peerDependencies
peter70
1
Secara umum, Anda mungkin tidak selalu ingin menyelesaikan ketergantungan yang tidak terpenuhi. Sebagai contoh, itu beberapa paket memiliki ketergantungan pada other-package@^1.5.0, dan Anda memiliki [email protected] diinstal, Anda mungkin tidak perlu memutar kembali versi. Akan lebih baik untuk menguji jika Anda benar-benar mengalami masalah dengan versi yang lebih baru.
John Pankowicz
1
Lihat juga Mengapa dependensi teman sebaya ada?
mikemaccana

Jawaban:

203

npm tidak lagi menginstal dependensi peer sehingga Anda perlu menginstalnya secara manual, lakukan saja npm installpada deps yang diperlukan, dan kemudian coba instal yang utama lagi.


Balas komentar:

itu benar dalam pesan itu, ia mengatakan deps mana yang Anda lewatkan

UNMET PEER DEPENDENCY angular-animate@^1.5.0 +-- 
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57` 

Jadi kamu perlu npm install angular angular-animate angular-aria angular-material angular-messages mdi

Datsik
sumber
apakah ada cara untuk menemukan deps untuk bahan sudut sehingga saya dapat menginstal?
Reza
2
Apakah Anda perlu menambahkan dependensi baru ini ke Anda package.json?
0xcaff
2
@caffinatedmonkey yang ideal
Datsik
9
@caffinatedmonkey jika Anda menetapkan --savesakelar npm akan memperbarui paket Anda. json untuk Anda (atau --save-devjika paket tersebut merupakan ketergantungan pengembangan)
McGuireV10
33
Bukankah seluruh titik npm untuk mengatur semua dependensi untuk Anda? jika saya melakukan instalasi npm, kemudian dapatkan daftar sekelompok dependensi yang belum terpenuhi yang harus saya tambahkan secara manual ke file composer.json saya dengan tangan, nilai apa yang saya dapatkan dari npm pada saat itu?
chiliNUT
66

UNMET PEER DEPENDENCYkesalahan dilemparkan ketika dependensi dari satu atau lebih modul yang ditentukan dalam package.jsonfile tidak terpenuhi. Periksa peringatan dengan hati-hati dan perbarui package.jsonfile dengan versi dependensi yang benar.

Lalu lari

rm -rf node_modules/
npm cache clean
npm install

Ini akan menginstal semua dependensi yang diperlukan dengan benar.

JayKrish
sumber
3
apa itu ketergantungan teman sebaya
aWebDeveloper
Ketika Anda menginstal sebuah paket, paket itu mungkin tergantung pada versi spesifik dari paket lain. Jika Anda tidak memberikan versi paket ketergantungan yang benar, maka "Ketergantungan Sebaya" tidak terpenuhi. Jadi, Anda perlu memperbarui versi yang diharapkan dari paket dependen untuk menyelesaikannya.
JayKrish
4
Itu tidak berhasil untuk saya. Saya masih mendapat peringatan tentang rekan kerja yang diminta.
Adam Zerner
1
Jauh lebih bersih daripada solusi yang diterima! Satu set kode ini menangani setiap kasus yang mungkin dari masalah op, alih-alih masalah spesifik yang mereka miliki.
HoldOffHunger
menggunakan perintah clean cache npm memberikan kesalahan: Pada npm @ 5, cache npm sembuh sendiri dari masalah korupsi dan data yang diekstrak dari cache dijamin valid. Jika Anda ingin memastikan semuanya konsisten, gunakan 'npm cache verifikasi'. npm ERR! Jika Anda yakin ingin menghapus seluruh cache, jalankan kembali perintah ini dengan --force.
CodeMonkey
30

Dalam kasus saya semua dependensi sudah ada di sana. Harap perbarui NPM dalam kasus itu karena mungkin macet. Itu memecahkan masalah saya.

npm install -g npm
Anuj Sharma
sumber
Bekerja untukku. Saya menerima kesalahan UNMET PEER DEPENDENCY typescriptsaat mencoba menginstal tslint. setelah memperbarui npm, harus menginstal skrip terlebih dahulu dan kemudian instal tslint.
Ravimallya
Untuk beberapa alasan, saya harus menjalankannya lebih dari satu kali hingga semua dependensinya diperbarui.
Coderer
Ini memecahkan npm untuk saya dan menghasilkan banyak kesalahan.
Jack
14

npm-install-peer bekerja untuk saya.

npm install -g npm-install-peers
alexoviedo999
sumber
1
Tidak berfungsi untuk saya: "Paket ini sepertinya tidak memiliki dependensi peer". Namun, saya memiliki beberapa pesan seperti "npm ERR! Peer dep missing: @ angular / common @ ^ 5.0.0 || ^ 6.0.0, diperlukan oleh @ agm / core @ 1.0.0-beta.3"
Almir Campos
2
Paket ini hanya menginstal deps peer langsung dari paket saat ini dan mati tidak menangani deps peer dari deps paket (teman sebaya anak-anak).
Alex Skrypnyk
7

Salah satu penyebab kesalahan ini yang paling mungkin adalah Anda telah mendefinisikan versi yang lebih lama di package.json Anda. Untuk mengatasi masalah ini, ubah versi di package.json agar sesuai dengan npm yang dikeluhkan.

Setelah selesai, jalankan npm install dan voila !!.

Thomas Mwania
sumber
6

Jawaban ini tidak berlaku untuk semua kasus, tetapi jika Anda tidak dapat menyelesaikan kesalahan hanya dengan mengetik npm install , langkah ini mungkin membantu.

Katakanlah Anda mendapat kesalahan ini.

UNMET PEER DEPENDENCY packageA@4.2.0

npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.

Ini berarti Anda menginstal versi 4.2.0 packageA, tetapi [email protected] membutuhkan versi 3.xx dari pakageA. ( penjelasan ^ )

Jadi Anda dapat mengatasi kesalahan ini dengan menurunkan versi packageA ke 3.xx, tetapi biasanya Anda tidak ingin menurunkan versi paket.
Kabar baiknya adalah bahwa dalam beberapa kasus, packageB tidak mengikuti paketA dan pengelola paketB berusaha keras untuk meningkatkan ketergantungan peer dari packageA ke 4.xx.
Dalam hal ini, Anda dapat memeriksa apakah ada versi yang lebih tinggi dari paketB yang membutuhkan versi 4.2.0 packageA di npm atau github.

Misalnya, Buka halaman rilismasukkan deskripsi gambar di sini

Seringkali Anda dapat menemukan pemecahan perubahan tentang ketergantungan seperti ini.

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

Jika Anda tidak menemukan apa pun di halaman rilis, buka halaman masalah dan cari masalah dengan kata kunci seperti peer. Anda dapat menemukan informasi yang bermanfaat.

masukkan deskripsi gambar di sini

Pada titik ini, Anda memiliki dua opsi.

1) Tingkatkan ke versi yang Anda inginkan
2) Tinggalkan kesalahan untuk saat ini, tunggu hingga versi stabil dirilis.

Jika Anda memilih option1:
Dalam banyak kasus, versi tidak memiliki latest tag sehingga tidak stabil. Jadi, Anda harus memeriksa apa yang telah berubah dalam pembaruan ini dan memastikan tidak ada yang rusak.

Jika Anda memilih option2:
Jika pemutakhiran pakageA dari versi 3 ke 4 adalah sepele, atau jika pengelola pakageB belum menguji versi 4 dari pakageA tetapi mengatakan itu seharusnya tidak ada masalah, Anda dapat mempertimbangkan untuk meninggalkan kesalahan.

Dalam kedua kasus, yang terbaik adalah menguji secara menyeluruh jika tidak merusak apa pun.

Terakhir, jika Anda ingin tahu mengapa Anda harus melakukan hal seperti itu secara manual, tautan ini menjelaskan dengan baik.

ohkts11
sumber
3

Ok jadi saya berjuang untuk waktu yang lama mencoba mencari tahu ini. Ini adalah opsi nuklir , karena ketika Anda telah kehabisan semua cara lain ..

Setelah selesai, dan masih berfungsi, impor kode Anda yang sebenarnya ke proyek baru ini. Perbaiki kesalahan kompilasi apa pun yang disebabkan oleh penyebab sudut yang lebih baru.

Thats what do it for me .. 1 jam pengerjaan ulang vs 6 jam mencoba mencari tahu apa yang salah .. berharap aku melakukannya dengan cara ini untuk memulai ..

pengguna230910
sumber
OP menggunakan AngularJS
Edric
3

Jawaban yang diberikan tidak akan selalu berhasil. Jika itu tidak memperbaiki masalah Anda. Pastikan Anda juga menggunakan simbol yang benar di package.json. Ini sangat penting untuk memperbaiki sakit kepala itu. Sebagai contoh:

warning " > @angular/[email protected]" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > [email protected]" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

Jadi naskah saya harus antara 2.4.2 dan 2.6 kan?

Jadi saya mengubah perpustakaan naskah saya dari menggunakan "typescript": "^2.7"ke menggunakan "typescript": "^2.5". Sepertinya benar?

Salah.

The ^berarti bahwa Anda baik-baik saja dengan NPM menggunakan "typescript": "2.5"atau "2.6"atau "2.7"dll ...

Jika Anda ingin mempelajari apa ^dan ~itu berarti lihat: Apa perbedaan antara tilde (~) dan sisipan (^) di package.json?

Anda juga harus memastikan bahwa paket itu ada. Mungkin tidak ada "typescript": "2.5.9"nomor paket yang dicari. Agar benar-benar aman cukup hapus ~atau ^jika Anda tidak ingin membaca apa yang mereka maksud.

Samuel Thompson
sumber
Terima kasih atas penjelasannya. Apa yang terjadi jika saya menggunakan dua perpustakaan di mana yang pertama (misalnya library-one) menggunakan misalnya rekan package@<2.6dan yang lainnya ( library-two) rekan package@>2.7? Lalu apakah saya harus berurusan dengan dua versi packagedalam basis kode saya? Bagaimana saya tahu bahwa ketika saya menggunakan library-onesaya harus menggunakannya dengan [email protected]itu sementara ketika saya menggunakan library-twosaya harus menggunakannya dengan [email protected]?
tonix
2

Hari ini tersedia Angular 2 rc.7 , dan saya memiliki masalah yang sama dengan [email protected]UNMET PEER DEPENDENCY.

Jika Anda, seperti saya, hanya diganti @angular/...rc.6untuk @angular/...rc.7- itu tidak cukup. Karena, misalnya, @angular/routertidak memiliki rc.6versi.

Dalam hal ini, tinjau package.json lebih baik di Mulai cepat

ktretyak
sumber
OP menggunakan AngularJS
Edric
-6

Anda dapat menyelesaikannya dengan menginstal dependensi UNMET secara global.

contoh: npm install -g @ angular / common @ 4.4.6

instal satu per satu. ini bekerja untuk saya.

Srinivas Jatoth
sumber
Apakah ini benar-benar solusi terbaik, pikir? Menginstal secara global untuk mengabaikan "masalah" aktual untuk dependensi proyek?
qx3
1
Ini akan menginstal dependensi secara global pada mesin Anda. Rekan-rekan Anda tidak akan dapat menjelaskan hal ini di lingkungan yang dibagikan.
AC Patrice