NPM modül bağımlılıklarını yüklemiyor


151

Bu benim package.jsonana projeye dahil ettiğim modül için:

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

Unutulmaması gereken bir şey, bu modülün özel bir repoda yer alması ve bunu ebeveyn package.jsongibi dahil etmem :"module-name": "git+ssh://git@myserver:user/module-name.git"


Paketiniz.json, dahil etmek için kullandığınız satırda olduğu gibi iyi görünüyor. Hata mesajı alıyor musunuz? Git yolunda mı?
Ağustos'ta poida

1
Ben sa başına bir hata alıyorum, modül yüklenir ama postinstallyerel gruntpaketler NPM tarafından yüklenmediği için bulunamadı çünkü komut dosyası başarısız
Ahmed Nuaman

1
Bu sorun Kasım 2016'da hala devam ediyor. Yeni bir bilgisayara çalışan bir modülün temiz bir yüklemesini yapmıştım. @ Mohsen'in yanıtı düzeltildi.
Joe Lapp

Yanıtlar:


152

Görünüşe göre bir süredir var olan ve henüz bir çözümü olmayan bir hataya çarptı. Npm deposunda bu durum için birkaç açık sorun vardır:

Birincisinde, deneyebileceğiniz birkaç geçici çözüm listelenmiştir.

Alternatif bir çözüm, bağımlılıkları açıkça birinci düzey bağımlılar olarak listelemek için (biraz hackish) olabilir. Bu, listeyi korumanızı gerektirir, ancak pratik olarak çok seyrek yapılması gerekir.


1
@ Flame2057 Çok bilgilendirici olmasa da, şansın olmadığını bilmek güzel. Devam edip bir soru formüle edebilirsiniz, umarım topluluk çözecek bilgiye sahiptir. İyi eğlenceler!
allprog

Benim için ek bir adım daha gerekiyordu. Benim projede "Bağımlılıklar" sağ tıklayın ve burada belirtilen diğer adımları yaptıktan sonra "Paketleri Geri Yükle" seçmek zorunda kaldı (node_modules ve package.lock.json silin, sonra npm install).
Taersious

113

Çok benzer bir sorun vardı, tüm node_modulesklasörü kaldırmak ve yeniden yükleme benim için çalıştı. Bu numarayı IT Crowd şovundan öğrendim !

rm -rf node_modules
npm install

Bu aslında benim için çalıştı. Bence bu gerçekten tuhaf - bu aksamaya ne sebep oluyor? Ne olursa olsun, klasörü silmek ve npm install yeniden çalıştırmak, o zaman çalışır. Önceden, bu alt dizine hiçbir şey yüklenmezdi. Şimdi, hepsi orada kurulur.
CtheGood

Teşekkürler @Moshen. Düğümün eski bir sürümünü kaldırmıştım ve temiz bir kurulum yaptım. Tüm node_modules / global olarak kaldırdım ancak mevcut uygulamalardan kaldırmayı unuttum. Varolan her uygulamanın dizinindeki node_modules klasörünü silmek, ardından çalıştırmak zorunda kaldım npm install.
wilblack

İyi eski " sıfırdan yaklaşımla yeniden başlatmayı denedin mi?". Bu benim için harika çalıştı.
Marco Aurélio Deleu

Bir geçici çözüm olduğunu bilmek güzel olsa da, bu gerçekten 'makinenizi yeniden başlatın ve tekrar deneyin' smacks ve sadece gerçek sorunu gizler. NPM yükleme ile benzer bir sorun var (işlem hemen hiçbir ileti ile çıkar) ve geçici çözümlerden biri node_modules klasörünü silmek ve yeniden yüklemektir; ve burada neler olup bittiğini anladığımız konusunda bana güven vermiyor.
Kelly

1
Bu benim için çalıştı. Yapabileceğim IT Crowd referansı için tekrar +1 yapabilirsem.
texelate

32

Windows makinesini kullanıyorum.

  1. Node_modules klasörünü sildim.
  2. Her nasılsa, package.lock.json dosyası oluşturuluyor. O dosyayı sildim.
  3. Sonra npm yükleyin.
  4. Temiz yapı.
  5. Çalıştırmak.

14
Bu cevabın daha fazla sevgi alması gerekiyor. Package.lock.json dosyası beni mahvediyordu.
mwilcox

16

bu kodu devralmışsanız, bağımlılıklar ve sürümler kilitlenmiş olabilir ve bir ./npm-shrinkwrap.json dosyanız olabilir.

bağımlılığınız bu dosyada listelenmemişse, hiçbir zaman npm installkomutla yüklenmez .

paketleri manuel olarak yüklemeniz ve ardından npm shrinkwrapshrinkwrap dosyasını güncellemek için çalıştırmanız gerekir.


2
El ile bir paket yükleme package-lock.json8.0.0 ve npm 5.0.0 düğümü güncelleştirildikten sonra bir dosya oluşturmuştu bir sorun vardı . Bundan sonra, çalışan npm installtüm bağımlılıklarımı yerine sadece bir paketi yükleyecekti. Silme package-lock.jsonve yeniden çalıştırma npm installsorunu benim için çözdü.
Monkpit

1
@Monkpit Bu da benim için çözdü, teşekkürler! package-lock.jsonaraya giriyordu.
VirtualWolf

10

package.jsonDosyanızın ile aynı dizinde olmadığı sorunla karşılaştığınızdan şüpheleniyorum Gruntfile.js. grunt xxxKomutlarınızı çalıştırdığınızda, aşağıdaki gibi bir hata mesajı alırsınız:

Local Npm module "xxx" not found. Is it installed?

Şimdilik çözüm:

  • Gruntfile.js ile aynı dizinde package.json oluşturun
  • Hırıltı projeniz için gereken modülleri tanımlayın
  • gerçekleştirmek npm installBunları yerel olarak yüklemek için
  • Şimdi gerekli grunt komutu çalışmalıdır.

IMHO, bir üst npm modülünden (yani aynı proje içindeki bir üst dizinde package.json) yüklü homurdanma çözme modüllerine sahip olamayacağımız üzücü. Tartışma burada da önlemek yükleme "küresel" modüllerin yapıldığını belirtmek görünüyor ama ne istediğimiz yükleme yerine "benim projem" modüllerden olduğunu düşünüyorum.


Bu benim ana projemin yapısı (bu alt modül projesini içeri alan): cl.ly/image/020E0b3I0t1A ve alt modül projemin yapısı: cl.ly/image/2q0L3l1v0s40 ; hem aynı Gruntfile.jshem de her ikisini de içerdiğini görebilirsiniz package.json.
Ahmed Nuaman

1
Bu bir sorun değil grunt, npmalt modül projeme bağımlılıkları tekrar tekrar yüklememeyle ilgili bir sorun .
Ahmed Nuaman

9

Düğümün eski bir sürümü için OP doğru olabilir. Ancak, 4.4.1 düğümünde de aynı durumla karşılaştım.

Kullandığınız düğüm sürümüne çok iyi bağlanmış olabilir. En son sürüme yükseltmeyi deneyin. Bazı bağımlılıklar, düğüm sürümüyle uyumlu değilse geçici olarak yüklenmez.

Bunu koşarak buldum npm update.

En son sürüme geçtikten sonra (4.4 -> 5.9); bu düzeltildi.


8

Benim durumumda bu kaldırmak için yardımcı oldu node_modulesve package-lock.json.

Bundan sonra her şeyi yeniden yükleyin npm install.


8

Ayrıca paket adınızın doğru bir şekilde kabul edildiğini kontrol edin:

YANLIŞ:

{
    "name":"My Awesome Package"
}


DOĞRU

{
    "name": "my-awesome-package-name"
}

1
Evet adında bir alan vardı ve düzgün yüklenmedi.
Ansjovis86

1
sadece alan için değil, aynı zamanda isminde kullandığı '-' ile ilgili, ben de aynı sorunla karşılaştım, koymak - veya _ isme, işe yarayacak.
molagbal

4

Grunt-cli'yi yüklemeniz gerekebilir, npm kurulumu yapmadan önce bunu deneyin:

sudo npm install -g grunt-cli

Bu homurdanma benim için çıkmaz giderir, ayrıca geçerli bir homurdanma dosya gerekir.

Kaynak: https://stackoverflow.com/a/16456467/241294


Komut isteminizde 'grunt' komutunu denediğinizde ne olur? Yolunuzda var mı? Haklısın, macunundan takılı gibi görünüyor. Sudo ve -g ile yüklediniz mi?
poida

Bu homurdanmayla ilgili bir sorun değil:~ ᐅ which grunt /opt/local/bin/grunt
Ahmed Nuaman

Ayrıca NPM üzerinden çalıştırmak yerine repo kendisini klonlamak ve koşmak npm installve grunt install, iyi çalışıyor. Sorun şu ki, NPM package.json
repo'nun

Paket bağımlılıklarını hangi dizinde arıyorsunuz? Bunlar en üst düzeyde olmamalı, altta olmalıdır: üst düzey paket / düğüm_ modülleri / modül-adı / düğüm_ modülleri. Grunt yanlış dizinde çalıştığı için grunt dosyasını bulamıyor olabilir mi?
poida

Bu bir sorun değil grunt, NPM ile modüller kurduğunuzda, o modülün zaten kurulu olan herhangi bir bağımlılığının sonunda yazlık bir sonuç verir; söz konusu modülü kurduğumda, herhangi bir bağımlılık modülünün yazını almıyorum.
Ahmed Nuaman

4

Birisinin bu çıkmazdan muzdarip olması ve yaptığımla aynı asanine hatayı yapması durumunda, işte benim durumumda olan buydu. Bir saat boyunca kafamı duvara vurduktan sonra, json'umu yanlış bir şekilde iç içe yerleştirdiğimi ve anahtar "bağımlılıklar" ın "depo" anahtarının içinde olduğunu fark ettim.
Söylemeye gerek yok, hiçbir hata görülmedi ve hiçbir modül kurulmadı.


3

Bu sorunu aşmanın başka bir yolu da bunu modül package.jsonkomut dosyaları bölümüne eklemektir

"preinstall": "npm install {Packages You depend on}"

bunun yapacağı şey, modülün ihtiyaç duyduğu tüm paketleri yükleyecek ve bu hatayı almayacaksınız.


3

eski düğüm sürümü ile olur. düğümün son sürümünü şu şekilde kullanın:

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule

edit: ayrıca emin olun save.
Örneğin:npm install yourmoduleName --save


2

Windows'ta temiz bir Node dev ortamı yüklediğimde bu hatayı alıyordum.

Bunu düzeltmek için, yeni proje dizinime (sadece iskele yaptığım) gittim yo angularve iki komut yazdım :

npm install -g grunt --save-dev

Bu, projenize yerel homurdanma bağımlılıkları kuracaktır. Sonraki:

npm install

Bu, tüm (yeni) proje bağımlılıklarınızın kurulu olmasını sağlayacaktır.

Tada!


2

Bağımlılıklarınızın dependenciessizin package.json( sizin aksine devDependencies) bir parçası olması gerektiğinden emin olmak için bahsetmeye değer .

Benim sorunum temelde OP ile aynıydı:

  • başka bir repo repo1aracılığıyla özel bir repo (hadi diyelim) kurmak (hadi "module-name": "git+ssh://git@myserver:user/my-repo-name.git"diyelim repo2),
  • içinde repo2s' node_modulesdan bir paket bağımlılık repo1yoktu.
  • Aptalca hatam! .. yerine repo1bu bağımlılığı listeliyordudevDependenciesdependencies
  • Benim de bağımlılık Taşı repo1's package.jsonden devDependencies üzeredependencies
  • Benim içinde repo2kızkardeşimi kaldırıldı node_modulesve package-lock.jsonyaptım npm install, bir voilà! ... bağımlılık orada!

Dockerfile dosyamda npm install komutunun üstünde NODE_ENV = üretim ortamı değişkenini bildirmiştim, bu da devDependencies yüklenmemesine neden oldu
Pieter De Clercq

0

Ben de aynı problemi yaşadım. Ancak aynı makinede bir projenin iyi bir paketi vardı. Json, burada tüm bağımlılıklarım başarıyla kuruldu. Ve başka bir projede ne yaptığım önemli değil benim package.json bağımlılıkları yüklenmedi. Paketi yeni kopyaladım. Json ve başka bir projeye yapıştırdım. Ve işe yaradı! Bulduğum fark sadece dosyanın başındaki boş satırdı. Bilmiyorum ya da herhangi bir şeyi etkiler, belki başka bir sorun. Ancak sorun yalnızca package.json dosyasıydı.


0

Sanırım bu problemle de karşılaştım ve bulduğum en iyi çözüm konsoluma bakmak ve atılan hatayı bulmaktı. Bu yüzden dikkatlice okudum ve sorunun benim repo'yu, açıklamamı ve geçerli ismimi belirtmedim package.json. Bu bilgileri ekledim ve her şey yolundaydı.

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.