Kısa cevap
npm ERR! bağımlılık çakışması hatası, iki veya daha fazla paketin aynı bağımlı paketin farklı sürümlerini gerektirmesi durumunda ortaya çıkar. Çözüm, bağımlılık ağacını incelemek, sürümleri güncellemek veya kilitlemek ya da geçici olarak --legacy-peer-deps seçeneğini kullanmaktır. Uyarıları yok saymak önerilmez çünkü uygulamanın kararsız çalışmasına yol açabilir.
Sorun nasıl anlaşılır
- npm install ERESOLVE hatası veriyor
- Mesaj 'unable to resolve dependency tree' içeriyor
- Paket yüklemesi daha önce çalışmasına rağmen başarısız oluyor
- Uygulama uyumsuz paket sürümleri nedeniyle çöküyor
- npm peer dependency çakışması konusunda uyarıyor
En yaygın nedenler
Uyumsuz peer bağımlılıkları
İki paket aynı peer dependency paketinin farklı sürümlerini gerektirir, bu nedenle npm ortak bir sürüm bulamaz.
Projede eski paketler
package.json içindeki bazı paketler eski ve artık yeni paketlerle uyumlu olmayan daha eski bağımlılık sürümlerini gerektirir.
package-lock.json dosyasının elle değiştirilmesi
package-lock.json elle değiştirilmişse veya eksikse, npm bağımlılık ağacını doğru şekilde çözemez.
npm 7+ sürümünün kullanılması
Daha yeni npm sürümleri peer bağımlılıklarını daha sıkı denetler, bu nedenle daha önce gizli kalan hatalar artık görünür.
Adım adım çözüm
- 1
Tam hata mesajını okuyun
npm installkomutunu çalıştırın ve mesajı dikkatlice okuyun. npm genellikle hangi paketin ve hangi sürümlerin çakıştığını belirtir. Buna göre hangi paketlerin güncellenmesi veya uyarlanması gerektiğini bilirsiniz. - 2
Bağımlılık ağacını inceleyin
Hangi sürümlerin yüklü olduğunu ve kimin talep ettiğini görmek için
npm ls <paket-adı>komutunu çalıştırın. Daha ayrıntılı görünüm içinnpm ls --allkullanın. Bu, çakışmanın kaynağını belirlemenize yardımcı olur. - 3
Sorunlu paketleri güncelleyin
Neden eski bir sürümse,
npm update <paket-adı>deneyin veya package.json içindeki sürümü elle daha yenisine değiştirin. Ardından çakışmanın çözülüp çözülmediğini kontrol etmek içinnpm installçalıştırın. - 4
node_modules ve package-lock.json dosyalarını silin
Bazen kalan dosyalar sorunun kaynağıdır. Silmeden önce
package-lock.jsondosyasının yedeğini alın veya durumun git'e işlendiğinden emin olun. Ardındannode_modulesklasörünü vepackage-lock.jsondosyasını silin, sonranpm installkomutunu yeniden çalıştırın. Bu, sıfırdan bir bağımlılık ağacı oluşturur. - 5
Geçici çözüm olarak --legacy-peer-deps kullanın
Paketleri hemen güncelleyemiyorsanız,
npm install --legacy-peer-depskomutunu çalıştırın. Bu seçenek peer dependency çakışmalarını yok sayar ve paketleri eski npm sürümlerindeki gibi yükler. Bunun kararsızlığa yol açabileceğini unutmayın. - 6
--force seçeneğini dikkatli kullanın
npm install --forceseçeneği yüklemeyi zorlar ve inatçı durumları çözebilir, ancak bağımlılıkları bozabilir. Yalnızca önceki adımlar başarısız olduysa ve riski anlıyorsanız kullanın. - 7
Node.js sürüm uyumluluğunu kontrol edin
Bazı hatalar Node.js sürümünün paketlerle uyumsuz olmasından kaynaklanır. Node.js sürümünüzün paket gereksinimlerine uyup uymadığını kontrol edin. Uymuyorsa, sürüm yönetim araçlarını kullanarak sürümü değiştirin.
- 8
Güncelleme için npm-check-updates kullanın
npm-check-updatesaracını global olarak yükleyin ve package.json içindeki tüm sürümleri otomatik olarak en son sürümlere güncellemek içinncu -ukomutunu çalıştırın. Öncesinde değişiklikleri commit edin ve uyumluluğu kontrol edin, çünküncu -uyeni major sürümlere geçebilir. Ardındannpm installçalıştırın. Bu, çok sayıda eski paketi olan projeler için kullanışlıdır.
Hiçbir şey yardımcı olmazsa
Tüm adımlar denendi ve hata devam ediyorsa, sorunun npm kayıt defterinde veya ağda olup olmadığını kontrol edin. Bazen npm cache verify komutuyla npm önbelleğini kontrol etmek yeterlidir ve bozulma şüphesi varsa ancak o zaman npm cache clean --force ile temizleyip yeniden deneyin. Ayrıca, bağımlılıkları çözme konusunda farklı bir yaklaşıma sahip olan Yarn gibi alternatif bir paket yöneticisi kullanmayı düşünün. Bu da işe yaramazsa, paket belgelerine veya topluluğa danışın. Ekip projelerinde, herkesin uyumlu bir ortama sahip olması için package.json ve package-lock.json dosyalarındaki değişiklikleri iş arkadaşlarınıza bildirdiğinizden emin olun.
Tekrarlanmaması için
- Paketleri düzenli olarak güncelleyin ve `npm outdated` ile eski paketleri kontrol edin.
- package-lock.json kullanın ve git'e commit edin.
- package-lock.json dosyasını elle değiştirmekten kaçının.
- Ekipinizle paylaşmadan önce yüklemeyi temiz bir ortamda test edin.
Ne zaman uzmana başvurmalı
Bağımlılık çakışması tekrarlanıyor ve ekip verimliliğini etkiliyorsa veya hangi paket sürümlerinin uyumlu olduğundan emin değilseniz, BT desteğine başvurun. Bağımlılıkları analiz etmenize ve istikrarlı bir geliştirme ortamı kurmanıza yardımcı olabilirler.
Yazılım ve ürün geliştirme · Özel uygulamalar, SaaS ve 4-8 haftada MVPSık sorulan sorular
npm ERR! bağımlılık çakışması ne anlama gelir?
Bu, npm'in tüm gereksinimleri karşılayan bir paket sürümü bulamadığında ortaya çıkan bir hatadır. En sık iki veya daha fazla paket arasındaki peer dependency çakışması nedeniyle görülür.
--legacy-peer-deps güvenli bir çözüm mü?
Bu seçenek peer dependency çakışmalarını yok sayarak sorunu geçici olarak çözer. Ancak paketler gerçekten uyumsuzsa düzgün çalışmamalarına yol açabilir. Yalnızca geçici bir çözüm olarak kullanın.
Gelecekte bağımlılık çakışmasını nasıl önlerim?
Paketleri düzenli olarak güncelleyin, package-lock.json kullanın ve elle değiştirmekten kaçının. Ayrıca npm uyarılarını takip edin ve eski bağımlılıklara zamanında müdahale edin.