Npm UNMET PEER DEPENDENCY uyarısını nasıl düzeltirim?


223

Düğüm 5.6.0 ve npm 3.6.0 ile Windows 10'dayım. Çalışma klasörü içine açısal-malzeme ve mdi yüklemeye çalışıyorum. npm ile açısal-malzeme mdi hataları yükleyin :

+-- 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.

AngularJS Materyali ve MDI'yı kurmak için bunu nasıl çözebilirim?


Bu tür hatalar herhangi bir sorun yaratıyor mu?
blackHawk

Reza için değil, bu yüzden geç, ama diğerleri için ... Şunu deneyin: npm açısal-malzeme peerDependencies
peter70

1
Genel olarak, karşılanmayan bir bağımlılığı her zaman çözmek istemeyebilirsiniz. Örneğin, bazı paketlerin other-package@^1.5.0'a bağımlılığı vardır ve other-package@2.0.0 yüklüyse, sürümü geri almanız gerekmeyebilir. Yeni sürümle ilgili sorun yaşayıp yaşamadığınızı test etmek daha iyi olur.
John Pankowicz

Yanıtlar:


203

npm artık akran bağımlılıklarını yüklemez, bu yüzden bunları manuel olarak yüklemeniz gerekir, sadece npm installgerekli depslere bir tane yapın ve ardından ana olanı tekrar yüklemeyi deneyin.


Yorumu yanıtla:

bu mesajda doğru, hangi bölümleri kaçırdığınızı söylüyor

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` 

Yani ihtiyacın var npm install angular angular-animate angular-aria angular-material angular-messages mdi


monte edebilmem için açısal malzeme için depileri bulmanın bir yolu var mı?
Reza

2
Bu yeni bağımlılıkları kendi sitenize eklemeniz mi gerekiyor package.json?
0xcaff

2
ideal olurdu
@caffinatedmonkey

9
@caffinatedmonkey belirtirseniz --savenpm paketinizi güncelleyecektir. json sizin için (veya --save-devpaket bir geliştirme bağımlılığıysa)
McGuireV10 19:16

33
sizin için tüm bu bağımlılıkları yönetmek için npm bütün mesele değil mi? Eğer bir npm kurulumu yaparsam, elimde composer.json dosyasına elle eklemem gereken karşılanmamış bağımlılıkların bir listesini alırım, o noktada npm'den ne değer alıyorum?
chiliNUT

66

UNMET PEER DEPENDENCYpackage.jsondosyada belirtilen bir veya daha fazla modülün bağımlılıkları karşılanmadığında hata atılır . Uyarıları dikkatlice kontrol edin ve package.jsondosyayı doğru bağımlılık sürümleriyle güncelleyin .

O zaman koş

rm -rf node_modules/
npm cache clean
npm install

Bu, gerekli tüm bağımlılıkları doğru şekilde yükleyecektir.


3
akran bağımlılığı nedir
aWebDeveloper

Bir paket yüklediğinizde, bu paket diğer paketlerin belirli sürümlerine bağlı olabilir. Paketin doğru bir bağımlı sürümünü sağlamazsanız, "Eş bağımlılığı" karşılanmaz. Bu nedenle, bunu çözmek için bağımlı paketlerin beklenen sürümünü güncellemeniz gerekir.
JayKrish

4
Bu benim için işe yaramadı. Hala bir akran gerektiğine dair bir uyarı aldım.
Adam Zerner

1
Kabul edilen çözümden çok daha temiz! Bu bir kod kümesi, op'la ilgili sorunun olası tüm durumları yerine olası her durumu ele alır.
HoldOffHunger

npm önbellek temizleme komutunun kullanılması hatayı verir: npm @ 5 itibarıyla, npm önbelleği bozulma sorunlarından kendi kendini iyileştirir ve önbellekten çıkarılan verilerin geçerli olduğu garanti edilir. Her şeyin tutarlı olduğundan emin olmak istiyorsanız, bunun yerine 'npm önbellek doğrulamasını' kullanın. npm ERR! Önbelleğin tamamını silmek istediğinizden eminseniz, --force ile bu komutu yeniden çalıştırın.
CodeMonkey

30

Benim durumumda tüm bağımlılıklar zaten vardı. Bu durumda lütfen çökmüş olabileceğinden NPM'yi güncelleyin . Sorunumu çözdü.

npm install -g npm

Benim için çalıştı. UNMET PEER DEPENDENCY typescriptYüklemeye çalışırken hatayı alıyordum tslint. bir kez npm güncelleme, önce typscript yüklemek ve sonra tslint yüklemek zorunda kaldı.
Ravimallya

Nedense, tüm bağımlılıkları güncellenene kadar bir kereden fazla çalıştırmak zorunda kaldım.
Coderer

Bu benim için npm kırdı ve bir sürü hataya neden oldu.
Jack,

14

npm-install-peers benim için çalıştı.

npm install -g npm-install-peers

1
Benim için çalışmadı: "Bu paketin herhangi bir peerDependencies yok". Ancak, "npm ERR! Peer dep eksik: @ angular / common @ ^ 5.0.0 || ^ 6.0.0, @ agm / core @ 1.0.0-beta.3 için gerekli" gibi birkaç mesaj var
Almir Campos

2
Bu paket sadece mevcut paketin doğrudan akran bölümlerini kurar ve kalıp paketinin akran bölümlerini (çocukların akranları) ele almaz.
Alex Skrypnyk

7

Bu hatanın en olası nedenlerinden biri paketinizdeki eski sürümü tanımlamış olabilirsiniz. Bu sorunu çözmek için package.json'daki sürümleri bu npm ile ilgili olarak değiştirin.

Tamamlandığında, npm install ve voila !! 'yı çalıştırın.


6

Bu yanıt tüm durumlar için geçerli değildir, ancak hatayı yazarak çözemezseniz npm install , bu adımlar yardımcı olabilir.

Diyelim ki bu hatayı aldınız.

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.

Bu, packageA'nın 4.2.0 sürümünü yüklediğiniz anlamına gelir, ancak packageB@3.3.0, pakageA'nın 3.xx sürümüne ihtiyaç duyar. ( ^ açıklaması )

Bu nedenle, packageA'yı 3.xx'e düşürerek bu hatayı çözebilirsiniz, ancak genellikle paketi düşürmek istemezsiniz.
İyi haber şu ki, bazı durumlarda paketB sadece paketA'ya uymuyor ve paket B'nin koruyucusu paketA'nın eş bağımlılığını 4.xx'e yükseltmek için çok çalışıyor
. Bu durumda, paket B'nin daha yüksek bir sürümü olup olmadığını kontrol edebilirsiniz. npm veya github içinde packageA'nın 4.2.0 sürümünü gerektirir.

Örneğin, Sürüm sayfasına gitresim açıklamasını buraya girin

Çoğu zaman böyle bağımlılık konusunda kırılma değişikliği bulabilirsiniz.

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

Yayın sayfasında hiçbir şey bulamazsanız, sorun sayfasına gidin ve sorunu anahtar kelimeye göre arayın peer. Yararlı bilgiler bulabilirsiniz.

resim açıklamasını buraya girin

Bu noktada iki seçeneğiniz var.

1) İstediğiniz sürüme yükseltin
2) Şu an için hata bırakın, kararlı sürüm çıkana kadar bekleyin.

Seçenek1'i seçerseniz:
Çoğu durumda, sürümde latest etiket bulunmaz, bu nedenle kararlı olmaz. Bu nedenle, bu güncellemede nelerin değiştiğini kontrol etmeli ve hiçbir şeyin bozulmayacağından emin olmalısınız.

Seçenek2'yi seçerseniz:
pakageA'nın sürüm 3'ten 4'e yükseltilmesi önemsizse veya pakageB'nin koruyucusu pakageA'nın 4. sürümünü test etmediyse, ancak sorun olmaması gerektiğini söylüyorsa, hatayı bırakmayı düşünebilirsiniz.

Her iki durumda da, hiçbir şey kırmazsa iyice test etmek en iyisidir.

Son olarak, neden böyle bir şeyi manuel olarak yapmanız gerektiğini bilmek istiyorsanız, bu bağlantı iyi açıklar.


4

Verilen cevap her zaman işe yaramaz. Sorununuzu çözmezse. Bilgisayarınızda doğru sembolü kullandığınızdan emin olun package.json. Bu baş ağrısını düzeltmek için çok önemlidir. Örneğin:

warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

Yazı tipimin 2.4.2 ve 2.6 arasında olması gerekiyor, değil mi?

Böylece daktilo kitaplığımı kullanmaktan kullanmaya "typescript": "^2.7"değiştirdim "typescript": "^2.5". Doğru görünüyor mu?

Yanlış.

^Eğer npm kullanmanıza izin veriyor olup araç "typescript": "2.5"veya "2.6"veya "2.7"vs ...

Ne anlama geldiğini ^ve ~ne anlama geldiğini öğrenmek istiyorsanız : package.json içindeki tilde (~) ve caret (^) arasındaki fark nedir?

Ayrıca paketin var olduğundan emin olmalısınız. Belki "typescript": "2.5.9"paket numaralarına bakmıyoruz. Gerçekten güvenli olmak için sadece ~veya ^ne anlama geldiğini okumak istemiyorsanız kaldırın .


Bu açıklama için teşekkürler. İlkinin (örn. library-one) Örneğin bir eşini package@<2.6ve diğerini ( library-two) bir eşini kullandığı iki kütüphane kullanırsam ne olur package@>2.7? Sonra packagebenim kod tabanı iki sürümü ile uğraşmak zorunda kalacak ? Nasıl kullandığınızda bilecek library-oneBen ile kullanmak için package@2.5.9kullandığım zaman arada library-twoben onu kullanmak zorunda package@2.7.1?
tonix

3

Tamam bu yüzden anlamaya çalışırken uzun süre mücadele ettim. İşte nükleer seçenek, çünkü tüm diğer yolları tükettiğiniz zaman ..

  • Bilgisayarınızda yeni bir klasör oluşturun.
  • Yepyeni bir açısal kurulum indirin - bu kılavuzu kullandım: https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
  • Çalıştır, çalıştığından emin ol
  • Ardından bağımlılıklarınızı package.json dosyasından tek tek yükleyin
  • Her biri kurulduktan sonra çalıştırın

İşiniz bittiğinde ve hala çalışıyorsa, gerçek kodunuzu bu yeni projeye içe aktarın. Herhangi bir derleme hatası düzeltmek daha yeni açısal nedenleri.

Bu benim için ne yaptı .. 1 saat rework vs 6 saat wtf anlamaya çalışırken yanlış oldu .. keşke başlamak için bu şekilde yaptım ..


OP AngularJS
Edric

2

Bugün mevcut Açısal 2 rc.7 , ve rxjs@5.0.0-beta.12UNMET PEER BAĞIMLILIĞI ile benzer bir sorun yaşadım .

Eğer, benim gibi, basitçe değiştirilmesi @angular/...rc.6için @angular/...rc.7- bu yeterli değil. Çünkü, örneğin, bir sürümü @angular/routeryok rc.6.

Bu durumda, daha iyi yorum package.json içinde Hızlı bir başlangıç


OP AngularJS
Edric

-6

UNMET bağımlılıklarını global olarak yükleyerek çözebilirsiniz.

örnek: npm install -g @ açısal / ortak @ 4.4.6

her birini tek tek kurun. benim için çalıştı.


Bu gerçekten en iyi çözüm mü? Proje bağımlılıkları için gerçek "sorunu" yok saymak için global olarak mı kuruluyorsunuz?
qx3

1
Bu, bağımlılıkları makinenize global olarak yükleyecektir. Arkadaşlarınız bunu paylaşılan bir ortamda hesaplayamayacak.
AC Patrice
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.