Npm install neden karşılanmayan bağımlılıklarım olduğunu söylüyor?


404

Düğüm paketim var. npm installPaket kökünden çalıştırdığımda , bir sürü şey yükler, ancak daha sonra aşağıdaki gibi görünen birkaç hata iletisi yazdırır:

npm WARN karşılanmayan bağımlılık / Kullanıcılar / seanmackesey / google_drive / code / explore / generator / node_modules / findup-sync / node_modules / glob graceful-fs@'~1.2.0 'gerektirir ancak yüklenir

Tam olarak ne npm installyaptığı hakkında kafam karışmalı . Bir bağımlılık algılarsa, yüklememeli mi? Hangi koşullarda bana böyle hata mesajları veriyor ve bağımlılıkları nasıl çözebilirim?

Yanıtlar:


397

İnanıyorum ki bağımlılık çözünürlüğü biraz kırılmış, bkz. Https://github.com/npm/npm/issues/1341#issuecomment-20634338

Olası çözüm aşağıda verilmiştir:

  1. Karşılanmayan bağımlılıklar içeren üst düzey modülleri manuel olarak yüklemeniz gerekir: npm install findup-sync@0.1.2

  2. Paketinizi yeniden yapılandırın. Json. Tüm üst düzey modülleri (diğer modüller için bağımlılık görevi görür) en alta yerleştirin.

  3. npm installKomutu yeniden çalıştırın .

Sorun, npm'in zaman aşımı veya başka bir şey nedeniyle tüm paketi indirememesinden kaynaklanabilir.

Not: Arızalı paketleri kullanarak da manüel olarak kurabilirsiniz npm install findup-sync@0.1.2.

Çalıştırmadan önce npm installaşağıdaki adımları uygulamak yardımcı olabilir:

  • kullanarak node_modules'ü kaldırın rm -rf node_modules/
  • Çalıştırmak npm cache clean

Neden 'node_modules'ü kaldırmak' bazen gereklidir? Yuvalanmış bir modül sırasında yüklenemezse npm install, sonraki npm installyuvalanmış bağımlılıkları tespit etmez.

Bu durumda, bazen eksik olan iç içe modüllerin üst düzey bağımlılığını kaldırmak ve npm installtekrar çalıştırmak yeterlidir . Görmek


22
Düğüm modüllerini çıkarmak ve önbelleği temizlemek benim için çalışmasını sağladı.
MarkoHiel

4
'nod_modülleri' kaldırmak, 'npm önbellek temiz' çalıştırmak ve sonra 'npm install' çalıştırmak sorunumu düzeltti. Tüm bağımlılıkları hatasız yüklenene kadar 'npm_install' ı üç kez çalıştırmak zorunda kaldım.
hendrix

2
eğer npm cache cleanerişim nedenlerle çalışmıyor, deneyin sudo npm cache clean.
Soroush

12
@Soroush körü körüne doğru çalışmayan şeylere sudo eklemek onları sihirli bir şekilde düzeltmez, sadece neler olduğunu bilmediğiniz anlamına gelir.
Edgar Aroutiounian

5
npm için diğer "çözüm" neden rm r node_modules içerir? ve neden çoğu durumda bu gerçekten tek seçenek? bir paket yöneticisinin böyle çalışması gerektiğini
anladığım kadarıyla değil

83

WIFI bir sırasında düştü bana oldu npm install. Çıkarma node_modulesve yeniden çalıştırma npm installsorunu düzeltildi.


26
ve deneyin npm cache clean.
ijse

5
Düğümü yeniden yüklemek muhtemelen gerekli değildir, ancak bunu yapmak npm cache cleanve kaldırmak arasında node_modulesbu tavsiye benim için çalıştı.
RichLitt

@RichLitt, Evet yapmak npm cache cleanbenim için yeterli değildi node_modules, ağ "yükleme" sırasında başarısız olduktan sonra işe almak için de kaldırmak zorunda kaldı .
Mark Tomlin

Hangi node_modulesdizinin kaldırılacağı konusunda kafam karıştı Hata ile benzer bir sorunum var/usr/local/lib/node_modules/npm/node_modules/read-installed/node_modules/readdir-scoped-modules requires graceful-fs@'^4.1.2'
wuliwong

1
@wuliwong En üst seviye.
geon

33

Bu komut satırlarını kullanarak sorunu çözdüm

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

Bitti!


5
Sudo npm update -g npm çalıştırdıktan sonra, npm'im işe yaramadı, herhangi bir şey yükleme girişimi "npm ERR! Modülü bulunamadı" im-package-json "bulamıyorum im aşağı oy
MichaelB

Benim ve başkaları için işe yaradı, belki başka bir sorunun var. Read-package-json modülünü global olarak kurmayı deneyin sudo npm install -g read-package-jsonVeya npm'nizi tekrar yükleyin
Zakatamine

8
uyarı: sudo ile birlikte kullanmamalısınız npm, bunun yerine npm'nin yazmak istediği dizinin izinlerini veya sahipliğini değiştirmeniz önerilir.
Sgnl

1
orada da "npm önbellek temiz" eklemek isteyebilirsiniz
Alexander Mills

1
Kullanmayın sudoNPM ile
Grant

11

NPM'yi en son sürüme yükseltmek bu konuda çok yardımcı olabilir. dule'un yukarıdaki cevabı, bağımlılık yönetiminin biraz bozuk olduğunu söylemek doğru, ancak bunun esas olarak npm'nin eski sürümleri için olduğu anlaşılıyor.

Komut npm listsize yüklü olanların bir listesini verir node_modules. Sürüm 1.4.2'den sürüm 2.7.4'e yükselttiğimde, önceden işaretlenen birçok modül WARN unmet dependencyartık böyle kaydedilmedi.

Npm'yi güncellemek npm install -g npmiçin MacOSX veya Linux'ta yazmalısınız . Windows'da, nodejs yükleyicisini yeniden indirmenin ve yeniden çalıştırmanın npm'yi güncellemenin daha etkili bir yolu olduğunu buldum.


CentOS 7 depolarında dağıtılan npm sürümü ile aynı sorunu yaşadım. Node.js'den en son npm sürümünü yükledim ve sorun kayboldu, bu yüzden haklısın, eski bir sürümle ilgili bir sorun olabilir.
Elouan Keryell-Even

9

Yukarıdaki cevaplar node_modulesdizini sildikten sonra bile bana tam olarak yardımcı olmadı .

Aşağıdaki komut sonunda bana yardımcı oldu:

npm config set registry http://registry.npmjs.org/

Bunun düğüm modüllerini güvenli olmayan bir HTTP bağlantısı üzerinden aldığını unutmayın.

Src: https://stackoverflow.com/a/13119867/4082503


Bu da bana yardımcı oldu yanı sıra ev sahibi trafiği yönlendiriyordu.
dimiguel

1
@dimgl bilmek güzel :)
Vinay Vemula

1
@ Dejel diğer cevapları da denedin mi? npm installBirden çok kez çalıştırmanız ve / veya bazı düğüm paketlerini tek tek manuel olarak yüklemeniz gerekebilir .
Vinay Vemula

4

Her biri -- UNMET PEER DEPENDENCYiçin, örneğin. -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2, npm install --save rxjs@5.0.0-rc.2daha fazla kalmayıncaya kadar bu bağımlılığı yükleyin UNMET DEPENDENCIES.

İyi şanslar.


1
Beni yeni bir hata da dahil olmak üzere aynı hatalarla bırakır:ERR! code 1
Wouter Vanherck

1
@WouterVanherck lütfen deneyebilir misiniz rm -rf node_modules, sonra npm cache cleanve npm install. Hala değil çalışır, yine sizi önermek rm -rf node_modulessonra, npm i -g yarnve sonra yarn install. İpliği yönetmek oldukça iyidir node_modules. İyi şanslar.
Akash,

1
Evet, bunun için ne peerDependenciesvar. Sizi sürümün bilinçli bir seçimine itmek için.
Kamafeather

3

npm listUNMET BAĞIMLILIĞI olarak listelenen tüm paketleri çalıştırıp yükledim

Örneğin:

├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1


2

Bu benim için çözdü:

  1. Hatalara göre sürüm numaralarını düzeltin package.json;
  2. Kaldır node_modules( rm -rf node_modules);
  3. Tekrar çalıştır npm install.

Başka hata kalmayana kadar bu adımları tekrarlayın.


1

Benzer damardaki bir şey, bir adım daha eklerdim.

Npm> 1.4.9 sürümünde, 'npm install' öğesinin devDependencies yüklediğini unutmayın. Öncelikle mevcut modülleri ve önbelleği kaldırmayı deneyin:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

O zaman dene:

npm install --dev
npm update --dev

Bu en azından özyinelemeli bağımlılık çözümünü çözecektir.


6
--dev bayrağı ne için?
Alexander Mills

1

--dev, devDependencies'i tekrar tekrar yükleme (ve sonsuza kadar çalıştırılması ..) sürüm farklılıklarını çözmeye nasıl yardımcı olabilir?

Node_moduls klasörünü kaldırmayı, ardından npm önbelleğini temizlemeyi ve sonra tekrar 'npm i' yi çalıştırmayı deneyebilirsiniz


1

React Native CLI'yi yüklerken de benzer bir sorun yaşadım. /node_modulesBuradaki yanıtları okuduktan sonra hangi dizini kaldırmam gerektiğinden emin değildim. Sonunda koştum

npm update -g

ve bundan sonra paketi kurabildim.


1

Çalışan otomatik bir dağıtım sistemi üzerinde çalışmaya çalışıyordum npm install, bu yüzden bu çözümlerin çoğu otomatik bir fasionda benim için işe yaramayacaktı. Silme / yeniden oluşturma için bir konumda değildim ve node_modules/Node.js sürümlerini kolayca değiştiremedim.

Bu yüzden çalışan sona erdi npm shrinkwrapekleyerek - npm-shrinkwrap.jsonBenim dağıtım demetine dosyası ve orada indirme sayısını koşuyor. Bu benim için sorunu çözdü; shrinkwrap dosyası bir `` yardımcı '' olarak, npm doğru paketleri bulabiliyor ve benim için kuruyor gibiydi. (Shrinkwrap'in başka özellikleri de var, ancak bu özel durumda ihtiyacım olan şey buydu).


1

Tepki paketleri yüklerken bu sorunla karşılaştım ve bu benim için çalıştı: npm install --save <package causing this error>



1

npm installtüm paketleri yükler npm-shrinkwrap.json, ancak package.jsonönceden ayarlanmamışlarsa içindeki paketleri yok sayabilir .

Projenizde bir varsa, her ekleme / kaldırma / değiştirme eklediğinizde yeniden oluşturmak için npm-shrinkwrap.jsonçalıştırdığınızdan emin olun .npm shrinkwrappackage.json



0

4.0.0 sürümüne güncelleniyor

4'e güncellemek, Açısal bağımlılıklarınızı en son sürüme güncellemek ve animasyonlar istiyorsanız iki kez kontrol etmek kadar kolaydır. Bu, çoğu kullanım durumunda işe yarayacaktır.

Linux / Mac'te:

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save 

Windows'ta:

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

Ardından, normalde kullandığınız servis veya npm start komutunu çalıştırın ve her şeyin çalışması gerekir.

Eğer Animasyonlar güvenirse, yeni ithal BrowserAnimationsModulegelen @angular/platform-browser/animationssizin kök NgModule. Bu olmadan, kodunuz derlenir ve çalışır, ancak animasyonlar bir hatayı tetikler. Tarafından @angular/coreyapılan ithalatlar kullanımdan kaldırıldı, yeni paketten yapılan ithalatları kullanın

import { trigger, state, style, transition, animate } from '@angular/animations';.
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.