İçeriğe geç

npm ERR! bağımlılık çakışması: paketler nasıl çözülür ve yüklenir

Orta 15 dk Güncellendi:

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

    Tam hata mesajını okuyun

    npm install komutunu ç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. 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çin npm ls --all kullanın. Bu, çakışmanın kaynağını belirlemenize yardımcı olur.

  3. 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çin npm install çalıştırın.

  4. 4

    node_modules ve package-lock.json dosyalarını silin

    Bazen kalan dosyalar sorunun kaynağıdır. Silmeden önce package-lock.json dosyasının yedeğini alın veya durumun git'e işlendiğinden emin olun. Ardından node_modules klasörünü ve package-lock.json dosyasını silin, sonra npm install komutunu yeniden çalıştırın. Bu, sıfırdan bir bağımlılık ağacı oluşturur.

  5. 5

    Geçici çözüm olarak --legacy-peer-deps kullanın

    Paketleri hemen güncelleyemiyorsanız, npm install --legacy-peer-deps komutunu ç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. 6

    --force seçeneğini dikkatli kullanın

    npm install --force seç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. 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. 8

    Güncelleme için npm-check-updates kullanın

    npm-check-updates aracı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çin ncu -u komutunu çalıştırın. Öncesinde değişiklikleri commit edin ve uyumluluğu kontrol edin, çünkü ncu -u yeni major sürümlere geçebilir. Ardından npm 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 MVP

Sı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.

Paylaş
Çözüm bulamadınız mı?AI BT asistanı 7/24 hizmetinizde. Sorunu anlatın veya hatanın ekran görüntüsünü gönderin, durumunuza özel talimat alın.AI BT asistanına sorun