Düğümler yüklü modülü Windows'ta bulamıyor


240

Şu anda Windows'ta düğüm öğreniyorum. Npm.cmd ile küresel olarak birkaç modül kurulur ve nodejs kurulu modülleri bulamadı. Örneğin yeşim taşı,

npm install jade -g

Jade dizine yüklenir "C:\Program Files (x86)\nodejs\node_modules", ancak aşağıdaki kod bir "Cannot find module 'jade'"hata ile başarısız olur ,

var jade = require('jade');

Ancak, yeşim yerel olarak yüklendiğinde kod başarıyla çalışacaktır (npm'de -g seçeneği olmadan). Yerel olarak kurulmuş modüller kullanmak istemiyorum, bu benim için bir disk alanı kaybı. Global olarak yüklenen modüllerin Windows üzerinde çalışmasını nasıl sağlayabilirim?



3
@AmolMKulkarni: bunun nasıl alakalı olduğundan emin değilim. Gereksinime '.js' eklemek, Windows'ta sorunu çözmez.
Dan Dascalescu

1
@DanDascalescu: Bence cevabı yanlış anladın. Bu yanıtta verilen kod, ihtiyacınız olan paketi nasıl aradığını gösteren Node.js kodudur. Dolayısıyla, nerede ve nasıl dosya aradığını anlarsanız, sorununuzu daha kolay bir şekilde çözebilirsiniz.
Amol M Kulkarni


Stackoverflow.com/questions/5817874/… npm göre sonsuza kadar yüklemek -g
Şerif Yazdian

Yanıtlar:


349

Adlı bir ortam değişkeni ekleyin NODE_PATHve %USERPROFILE%\Application Data\npm\node_modules(Windows XP), %AppData%\npm\node_modules(Windows 7/8/10) veya npm'nin Windows lezzetinize modülleri yüklediği her yere ayarlayın. Onunla bir kez ve herkes için, bunu Sistem Özellikleri iletişim kutusunun Gelişmiş sekmesine bir Sistem değişkeni olarak ekleyin (çalıştırın control.exe sysdm.cpl,System,3).

Windows 7 ve sonraki sürümlerindeki hızlı çözüm sadece çalıştırmaktır:

rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules

Sadece NODE_PATHDüğüm uygulamalarına modül içe aktarılırken kullanıldığını belirtmek gerekir . CLI'nızda global olarak yüklenmiş modüllerin ikili dosyalarını kullanmak istediğinizde, bunu da sizin tarafınıza PATH, ancak parçasız olarak eklemeniz gerekir node_modules(örneğin %AppData%\npmWindows 7/8/10).


Eski hikaye

Node.js'de kendim için çok yeniyim, bu yüzden tamamen doğru olamıyorum, ancak deneyimimden bu şekilde çalışıyor:

  1. -g genel kütüphaneleri kurmanın bir yolu değildir, onları sistem yoluna yerleştirmenin bir yoludur, bu yüzden onları tam yolu yazmadan komut satırından çağırabilirsiniz. Örneğin, faydalıdır, daha sonra düğüm uygulaması yerel dosyaları, daha az gibi dönüştürür - eğer global olarak yüklerseniz, herhangi bir dizinde kullanabilirsiniz.
  2. node.js'nin kendisi npm global dizinine bakmadı, gerekli dosyaları bulmak için başka bir algoritma kullanıyor: http://nodejs.org/api/modules.html#modules_file_modules (temel olarak yoldaki her klasörü tarar, başlar node_modules klasörü için geçerli ve denetler).

Daha fazla ayrıntı için benzer soruya bakın: npm kullanarak global olarak nasıl modül kurabilirim?


17
Çok teşekkürler, sağladığınız bağlantılar çok faydalı, modül arama algoritması biraz karmaşık olmasına rağmen, şimdi çok daha netim. Son olarak NODE_PATH ortam değişkenini global modül yoluna başvurmak için kullanıyorum ve set NODE_PATH=C:\Documents and Settings\DevUser\Application Data\npm\node_modulesbeklendiği gibi çalışıyor. Global olarak yüklenen modüllerin Windows'ta '% USERPROFILE% \ Application Data \ npm \ node_modules' içine yerleştirilmesi garip, bu arada NODE_PATH içinde tırnak işareti bulunamaz.
Cosmore

2
Yardımcı olduğuma sevindim. NODE_PATH değişikliği FS gibi standart node.js modüllerine giden yolu kırmadı mı?
Alexey Ivanov

2
Hatta neden C:\Program Files\nodejs\node_modules\npm\node_modulesyeni kullandığım modüle sahip olmadığımı merak ediyordum npm install -g expressve mevcuttuC:\Documents and Settings\swapnil\Application Data\npm\node_modules
Swapnil Mhaske

1
Windows 8'de yol%USERPROFILE%\AppData\Roaming\npm\node_modules
Yar

9
Global node_modules dizininizin nerede olduğunu öğrenmek istiyorsanız, komutu çalıştırın npm list -g. İlk çıktı satırı global node_modules dizininin üstü olacaktır; diğer bir deyişle global node_modules dizini olacaktır {output}\node_modules. Ayrıca, çalıştırdığınızda yükleme dizinini yazdırırnpm install --global {xyz}
cowlinator 28:16

34

windows7 platformundaysanız belki NODE_PATH'ı şu şekilde değiştirmeniz gerekir: %AppData%\npm\node_modules


7
Windows 8'de de appdata \ roaming içinde
JonnyRaa 13:05

6
Npm 2.5.1 ile Windows 8.1'deyim ve NODE_PATH'ımı belgelendiği gibi ayarladım, ancak yüklü paketlerimi hala bulamıyor. Düşünceler?
JaKXz

5
Windows 10'da sadece% AppData% \ npm
gkiely

Benim durumumda (W10)% AppData% \ Roaming \ npm
Hinrich

32

Bir zombi uyandırabileceğimi biliyorum, ancak bu hala bir sorun olduğunu düşünüyorum, Windows 7'deki düğüm modüllerine küresel erişime ihtiyacınız varsa, bunu küresel değişken yolunuza eklemeniz gerekir:

C:\Users\{USER}\AppData\Roaming\npm

Önemli: sadece node_modulesparçası olmayan bu , bunu görmek için yarım saatimi aldı.


4
Alternatif olarak, Windows 8 kullanıcıları için% USERPROFILE% \ AppData \ Roaming \ npm
Benson

4
Parçanın çıkarılmasıyla ilgili tavsiye için teşekkürler node_modules, bununla da mücadele ediyordu!
danguilherme

20

Windows 10'da çalışmasını sağlamak %USERPROFILE%\AppData\Roaming\npmiçin PATH klasörüne klasör ekleyerek çözdüm. Böyle \node_modulesekledim: %USERPROFILE%\AppData\Roaming\npm\node_modules\benim için çalışmadı.


7
Veya daha basit bir şekilde, `% AppData% \ npm`
Dan Diplo

Dostum işe yaradı garip! Bu konuyu tam anlamıyla iki gündür avlıyorum. Bu denediğim en karanlık çözüm ve çalışan ilk çözüm. Çok teşekkür ederim.
Will

evet sadece pathçevre variabele ekleyin , o zaman biz doğrudan Windows 10 çalıştırabilirsiniz
Zhu Xiaohu

1
Bunun sadece bir örnekle nasıl gerçekleştirileceğini gösterecek, "sadece ekle ..." gibi şeyler söylemek yerine
Gabe Hiemstra

14

Bu düğümün blog gönderisinden alıntı yapacağım ...

Genel olarak, başparmak kuralı:

  • Programınızda kullanmak istediğiniz bir şey yüklüyorsanız, requir ('ne olursa olsun)' ı kullanarak projenizin kök dizinine yerel olarak yükleyin.
  • Kabuğunuzda, komut satırında veya başka bir şeyde kullanmak istediğiniz bir şey yüklüyorsanız, ikili dosyaları PATH ortam değişkeninize gelmesi için küresel olarak yükleyin.

...

Tabii ki, her ikisini de yapmak istediğiniz bazı durumlar var. Coffee-script ve Express'in ikisi de komut satırı arabirimi olan uygulamaların yanı sıra bir kütüphane için de iyi örneklerdir. Bu durumlarda, aşağıdakilerden birini yapabilirsiniz:

  1. Her iki yere de takın. Cidden, disk alanı bu kadar kısa mı? Gerçekten iyi. Küçük JavaScript programları.
  2. Global olarak yükleyin ve npm link kahve-script veya npm link express (sembolik linkleri destekleyen bir platformdaysanız.) O zaman sadece tüm linkleri güncellemek için global kopyayı güncellemeniz gerekir.

10
They’re tiny JavaScript programs.Bu kütüphanelerin bazıları kesinlikle küçük değil!
UpTheCreek

1
@UpTheCreek Disk alanı kapsamındaki boyuta atıfta bulunduğundan eminim. Bunlar metin dosyalarıdır. Nesnel olarak küçükler.
Phillip Copley

12

Kısaltmak npm link jadeiçin uygulama dizininizde kullanın .


4
npm link jadeWindows üzerinde çalışamıyor gibi görünüyor , npm aşağıdaki gibi bir hata mesajı döndürür:npm ERR! Error: npm link not supported on windows
Cosmore

1
Şimdi v0.8.9 sürümünde olduğu gibi
Gianfranco P.

@beyonddoor: npm linkYönetici komut penceresinden çalıştırmanız gerekir .
Mrchief

12

Ortam değişkenleri eklemeye / düzenlemeye çalıştı ve şu sonuca varmaya çalıştı:

  1. (Alt bölümün) User variablesyerine (üst kutunun) düzenleyin / ekleyin System variables; Aksi takdirde çalışmasını sağlamak için "yönetici olarak çalıştırmanız" gerekir.
  2. Ekleme ;%AppData%\npmiçin Pathdestekleniyorsa sipariş gibi (bir komut satırı aracı olarak kullanmak için de jshintvegrunt-cli ).
  3. Oluşturun NODE_PATHve ayarlayın %AppData%\npm\node_modulesamacıyla require('<pkg_name>')proje dizinine yüklemek olmadan komut. (Ancak Vista ve daha yeni bir işletim sistemi üzerinde çalışıyorsanız bu gereksinim için npm linkönerilirmklink .)

Test ortamı:

  • Win 7 (Giriş, 64 bit, SP1), Node.js 4.2.4, npm 2.14.12
  • Win 8.1 (Giriş, 64 bit), Node.js 0.10.30, npm 1.4.21

9

Küresel modüllerin çalışmasını sağlamak için korkunç bir zaman geçirdim. Sonunda, açıkça ekledimC:\Users\yourusername\AppData\Roaming\npm Sistem Değişkenleri altında PATH değişkenine . Ayrıca bu değişkenin listedeki nodejs yolu değişkeninden önce gelmesi gerekiyordu.

Windows 10 kullanıyorum.


benim için işe yarayan tek şey bu. Windows 8 üzerinde çalışan
charlie carver

1
Benim için de işe yarayan tek şey bu, teşekkürler!
devqon

6

Windows 7'de çalışan bu soruna rastladım

npm install -g gulp

normal kullanıcı olarak oturum açarken yönetici olarak

Çözüm: Normal kullanıcı ile aynı kurulumu gerçekleştirirken (cmd için "admin olarak çalıştırmayın") her şey yolundaydı. Sanırım varsayılan yükleme ve arama yolu ile ilgilidir.


1
Bu noktayı biraz daha açıklığa kavuşturmak için ... Düğüm bir yönetici olarak yüklendiğinde, sistem yolunu yöneticilerin genel düğüm modülü klasörüne bir başvuru içerecek şekilde güncelleştirir. Yeni bir kullanıcı genel olarak bir şey yüklediğinde farklı bir düğüm modülü klasörüne yüklenir. Düğüm'ü yükleyen kullanıcı dışındaki her kullanıcının genel düğüm modülü klasörünü içerecek şekilde yollarını güncelleştirmesi gerekir. Aynı hesaba düğüm kurar ve kullanırsanız, bu gerekli olmayacaktır.
dpsthree

Nodejs v6.9.4 ile Windows 8.1 pro, yol çalışmasını ayarlamak için: C: \ Program Files \ nodejs \ nodevars.bat
Robot70

4

Win8.1 npm ile olan tecrübemden modülleri kurar, C:\Users\[UserName]\AppData\Roaming\npm\node_modules ancak dökümleri arar C:\Users\[UserName]\node_modules.

Tam yol ile uygulamada basit bir çözüm referans modülü:

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");

4

Pencereler için, herkes nodejs ve npm modülleri için ortam değişkenleri ayarlamanız gerektiğini söyledi, ama nedenini biliyor musunuz? Bazı modüller için, komut satırı aracı vardır, modülü yükledikten sonra , C: \ Program Files \ nodejs'de [module] .cmd dosyası vardır ve pencere komutunda başlatmak için kullanılır. Bu nedenle, cmd dosyasını içeren yolu % PATH% ortam değişkenlerine eklemezseniz, komut penceresinden başarıyla başlatamazsınız.


2

Ben de aynı sorunu yaşadım, npm install -g bower

Bunun sebebi düğümün ben değil başka bir kullanıcı tarafından kurulmuş olmasıydı .

Düğümü kaldırdım ve sonra yeniden yükledim. Kurulum sırasında, PATH> npm modüllerine ekle seçeneği için bu metni gördüm :

Düğüm kurulumunda mesaj

resim açıklamasını buraya girin

Düğüm kurulumundan sonra npm install -g bowertekrar çalıştırdım . Ve şimdi bower çalışıyor.

Tabii benim gibi kendi kullanıcısıyla düğümü yeniden kurmaya gerek yoktur. Diğer kullanıcıların açıkladığı gibi, çözüm NODE_PATH veya PATH değişkenleri yoluyla olmalıdır .

Bu, yalnızca düğümün başka bir kullanıcı tarafından yüklenmişse (veya yükleme sırasında PATH> npm modüllerine ekle seçeneği işaretlenmemişse) oluştuğunu belirtmek içindir .


2

Benim için Windows 10'da çalıştı npm config set prefix %AppData%\npm\node_modules


1

Alternatif olarak, ~/.npmrcdoğru önek de ekleyebilirsiniz . C:\Program Files\nodejs64 Win7 için aldım .


1

Windows 10 ile yeni bilgisayarımda node.js'yi visual studio 2015 ile kullanmak istediğim için bu soruda tökezledim. Windows 7 ve 8 ve 8.1'de node.js kullandım. Hiçbir zaman modül bulmada sorun değil node.js. Seri ve RFXCOM modülü nedeniyle bu sürümü kullanmak zorunda olduğum için eski bir node.js 0.10.39 kullanıyorum.

Windows 10'un cevabı, C: \ Users \ User \ node_modules ile çevre değişkenlerinde NODE_PATH değerini ayarlamaktır.


1
Er, hayır. En (burada Windows 10 ..) Bazı modülleri bkz C:\Users\User\node_modules azından ben bazı modüller bakın C:\Users\User\AppData\Roaming\npm\node_modules ben bazı modülleri bkz C:\Users\User\node_modules bulunan Ayrıca C:\Program Files (x86)\nodejs\node_modules\npm\node_modules emin değil bu nasıl gerçekleştiğini. Hangisi hangisi ve neden böyle yaptılar?
zipzit

1

Windows 10 için, yerel olarak gulp klasörünü kurmak zorunda kaldım:

C: \ Users \ myaccount \ AppData \ Roaming \ npm \ node_modules

npm install gulp

Bu, "yudum tanınmadı" meselemi düzeltti


0

Sadece indirin ve gelen düğümü yeniden yüklemek bu ve bu her yolu sorunları çözecektir.

Komut isteminizi veya terminalinizi yeniden başlatmayı unutmayın.


0

Yukarıdaki cevapların hepsi benim için işe yaramadı. Sonunda işe yarayan tek şey% AppData% \ npm ortamını Path değişkenine VE C iki ng dosyaları silmek için: \ Program Files \ nodejs.

Ng paketleri C: \ Program Files \ nodejs \ node_modules içine kurulmamıştır, bu nedenle nodejs dizininden ng binary kullanılmasının işe yaramayacağı açıktır.

C: \ Users \ MyUser - PATH ortam değişkeni - .npmrc zaten yapılandırılmış çünkü neden bu dizinde arama emin değilim - Sistem değişkenleri ve / veya NODE_PATH eklemeye çalıştı


-4

Windows kullanıyorsanız, bazı adımlar atar, 1) package.json adlı bir dosya oluşturun

 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}

merhaba paketin adıdır ve * bağımlılığınızın en son sürümü anlamına gelir

2) proje dizinini kodlayın ve aşağıdaki komutu çalıştırın

npm kurulumu

Bağımlılıkları kurar


4
Bu küresel olarak yüklemez (ki bu soru sorar). Bu, uygulamaya bağımlılığı çeker
bryanmac

Node.js kurulumumu global olarak yüklenen modülleri tanımaya ikna etmek için yukarıda listelenen her şeyi denedim ve HİÇBİRİ işe yaramadı. Düğümü kaldırdıktan ve yeniden yükledikten sonra bile (v8.11.3 LTS), bir node.js komut dosyasında requir ("mongodb") komutunu vermeye çalıştığımda, SAME hatasını alıyorum: "Mongodb modülü bulunamadı". Ancak, "npm ll -g mongodb" komutunu verirsem, NPM modülün kurulu olduğunu söyler. Birisi bana bu sorunla ÇALIŞAN bazı dezavantaj verebilir misiniz?
David Edwards

GÜNCELLEME: Yukarıdaki Saulius aslında JavaScript geçici ifadesinde modülün tam yolunu belirten çalışan bir geçici çözüm sağladı. Ancak yüklü modüller için yanlış klasörlerde arama yapan node.js ile ilgili yaptığı gözlem doğruysa, birisi node.js geliştiricilerini buna karşı uyarabilir mi? Çünkü sorun STILL v8.11.3 LTS'yi etkiliyor.
David Edwards
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.