npm windows kurulumu genel olarak npm ERR ile sonuçlanır! konu ile ilgisi olmayan


121

Grunt ve npm için yeniyim. Bu yüzden ' http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers ' sitesinde bazı "yemek kitabı-örneği" deniyorum . Şimdi oraya bakmak zorunda değilsin, ama siteyi paylaşmanın iyi olacağını düşündüm. Şimdiye kadar her şey yolunda, küresel kuruluma gelene kadar. (Tamam, çözmem gereken bazı hatalar, ama şimdi npm çalışıyorum).

Küresel olarak bir şey kurmaya çalışırken sıkışıp kalıyorum.

Şimdiye kadar küresel olarak bazı paketler kurmayı test etmek için yaptığım şey:

  1. Test dizini oluşturuldu grunttest

  2. Bu dizinin içinde:

    npm install -g jshint

Görebildiğim çıktı:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
 jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
 ├── console-browserify@0.1.6
 ├── exit@0.1.2
 ├── underscore@1.4.4
 ├── shelljs@0.1.4
 ├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0)
 ├── cli@0.4.5 (glob@3.2.9)
 └── htmlparser2@3.3.0 (domelementtype@1.1.1, domutils@1.1.6, domhandler@2.1.0, readable-stream@1.0.26-2)

Kaynağın son kurulumdan bu yana (birkaç dakika önce) değiştirilmediğini söylediği için tamam olması gereken 304'ün farkına vardım.

Jshint'in var olup olmadığını kontrol etmek için:

`npm -global list`

Çıktı:

npm@1.4.3 C:\Program Files\nodejs\node_modules\npm
├── abbrev@1.0.4
├── ansi@0.2.1
├─...
├──
├── graceful-fs@2.0.2
├── inherits@2.0.1
├── ini@1.1.0
├─┬ init-package-json@0.0.14
│ └── promzard@0.2.1
├─┬ jshint@2.4.4 extraneous
│ ├─┬ cli@0.4.5
│ │ └─┬ glob@3.2.9
│ │   └── inherits@2.0.1
│ ├── console-browserify@0.1.6
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.3.0
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.1.0
│ │ ├── domutils@1.1.6
│ │ └─┬ readable-stream@1.0.26-2
│ │   └─... ├── text-table@0.2.0
├── uid-number@0.0.3
└── which@1.0.5

**npm ERR! extraneous: jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**

Sorular:

  1. Neden npm ERR alıyorum! yabancı ...?
  2. Bu ne demek?
  3. Bu sorunu nasıl çözebilirim?

Bilgi:

Cygwin'i kabuk olarak kullanan bir Windows makine Windows 7 kullanıyorum. jshint someTestfile.jselbette sadece jshint ( ) 'e çalışmak işe yaramaz.

Şimdiden teşekkürler Meru

Yanıtlar:


208

npm ERR! extraneousbir paketin kurulu olduğu ancak projenizde listelenmediği anlamına gelir package.json.

Küresel olarak kurulmuş paketleri listelediğiniz için, size basitçe göz ardı edilebilecek pek çok gereksiz hata verecektir çünkü küresel olarak kurulan çoğu şey sizin projenizde olmayacaktır package.json.


1
Selam! Cevap için teşekkürler. Bu aynı zamanda "jshint" i gerçekten çalıştırabilmem gerektiği anlamına mı geliyor?
Meru

Doğru. Çalıştırmak jshint myfile.jsjshint'i çalıştırmalıdır myfile.js.
Kyle Robinson Young

1
Ah, anlıyorum. Grunt ile her şey görevlerden geçer. grunt-contrib-jshintGörevi yükler ve yapılandırırsınız Gruntfile.js. Eğer küresel yüklemek tek şey npm i grunt-cli -gçalıştırmak hangi erişim sağlayan gruntbir çalıştırma komutu Gruntfile.js. Daha fazla bilgi için bu kılavuza bakın: gruntjs.com/getting-started
Kyle Robinson Young

8
Yerel olarak kaydedilmiş (genel olarak değil) gereksiz kitaplıklarınız varsa npm prune, onlardan kurtulmak için koşabilirsiniz .
krx

2
@KyleRobinsonYoung: Yanıt olarak bundan bahsetmeye ne dersiniz? Kullanılmayan tüm paketleri şunu kullanarak kaldırabilirsiniznpm prune --your-env
geek_guy

21

1 & 2: Bu, projenizin package.json dosyasında jshint'in listelenmiş olmadığı, ancak global olarak kurulu olduğu anlamına gelir. Yani bu büyük bir sorun değil.

3: Bu gereksiz hatayı önlemek için , kurulumu seçenekle çalıştırabilir veya yeniden çalıştırabilirsiniz --save. Bu, package.json dosyanızı otomatik olarak güncelleyecektir:

npm install -g jshint --save

Veya package.json dosyanızı manuel olarak bir "dependencies": {...}


ma durumda, genel yineleme olmaksızın yalnızca yerel ile çalışır
BG BRUNO

2
--saveile birlikte çalışmaz -g. Global paket listesinde package.json bulunmaz.
Guido Bouman

5

Bunu npm update, üst paketin klasöründe, bazı yabancı paketleri listeden kaldıran ve sonra npm uninstall <package>kalan birkaç tanesi için yapan bir yaparak çözdüm .

Bunu yaptıktan sonra hiçbir hata almadığım için işe yaramış gibi görünüyor.


3

Tüm cevapları birleştirerek çözdüm. İlk başta paketi global olarak kurdum.

npm install -g packagename --save

Npm bu paketi küresel olarak da yüklediğinden ancak yerel package.json dosyama eklemediğinden, bu konuda bir şeyler yapmam gerekti.

Yerel olanı kaldırıp ardından genel olarak yüklemek için çözümü seçiyorum.

npm uninstall packagename
npm install -g packagename

Bu şekilde daha fazla uyarı almam ve package.json dosyasını bozmam.


Artı 100. Yerel olarak kaldırmam ve global olarak yüklemem gerekiyordu.
Collin Peters

1

Benim durumum, bu npm ERR'yi gördüm! Bir 'npm ls' yaptığımda cygwin terminalimde gereksiz 'mesaj. Çok fazla tamirattan sonra bunun küresel olarak bozulmuş bir kurulum olduğunu düşündüm. Aşağıdaki gözlemleri burada öğreniyorum:

  • 'npm ls', geçerli klasör konumunuza bağlı olarak farklı çıktılar verir.
  • 'npm ls', geçerli klasör konumunda bir 'node_modules' klasörünün varlığını tespit etmeye ve bu içerikleri listelemeye çalışır. Küresel olanlar DEĞİL!
  • Ayrıca, 'node_modules' içeren geçerli klasörde burada listelenen daha az modül içeren bir package.json dosyası varsa, bu durumda hata gösterilir.

Ben 'rm package.json' ve 'npm ls' artık hata mesajı göstermiyor. Diyorum ki, her zaman 'node_modules' klasörünün ve package.json dosyasının mevcudiyetini kontrol edin, çünkü bunlar kontrolde ilk önce önceliklendirilir ve eğer bunlar eksikse, kontrol ana klasörde devam eder ve böyle devam eder, ve çok fazla kod parçacığı üzerinde değişiklik yaptıysanız, çok sayıda node_modules klasörü ve package.json dosyası etrafına dağılmış olabilirsiniz. J2EE Java geliştirme / tutulma IDE'sini yaparken yaşadığımız deneyimlerden veya Windows'ta ayarları değiştirmek için regedit'i kullanmak zorunda olduğumuz günlerde yaşadığımız deneyimlerden farklı olarak burada hiçbir şey gerçekten bozuk değildir.


1

Benim durumumda bunun nedeni, package.jsondosyasındaki paket adının package.jsonbağımlı modülde listelenen depency adıyla aynı olmamasıydı . Benim hatam, yarattığım yeni bir modül olduğu için, ancak npm herhangi bir ipucu vermeyeceği için fark edilmesi zor.

Bu dependencies: { "my-module": "file:local-modules/mymodule" }, "modülüm" adında bir yazım hatası ile sözdizimi kullanılırken meydana geldi .


0

Bunun nedeni, paketinizin package.json içinde olmamasıdır. Eklerseniz sorun çözülecektir, lütfen aşağıdaki resme bakınız:

görüntü açıklamasını buraya girin

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.