Nodejs विंडोज पर स्थापित मॉड्यूल नहीं ढूंढ सकते


240

मैं इस समय विंडोज पर नोडज सीख रहा हूं। कई मॉड्यूल npm.cmd के साथ विश्व स्तर पर स्थापित हैं, और नोडज स्थापित मॉड्यूल को खोजने में विफल रहे। उदाहरण के लिए जेड लें,

npm install jade -g

जेड निर्देशिका में स्थापित है "C:\Program Files (x86)\nodejs\node_modules", लेकिन निम्न कोड एक "Cannot find module 'jade'"त्रुटि के साथ विफल हो जाएगा ,

var jade = require('jade');

हालाँकि, कोड सफलतापूर्वक चलेगा जब जेड स्थानीय रूप से स्थापित किया गया है (npm में बिना -g विकल्प)। मैं स्थानीय स्तर पर स्थापित मॉड्यूल का उपयोग नहीं करना चाहता, यह मेरे लिए डिस्क स्थान की बर्बादी है। मैं विंडोज पर विश्व स्तर पर स्थापित मॉड्यूल कैसे काम कर सकता हूं?



3
@AmolMKulkarni: सुनिश्चित नहीं है कि यहां प्रासंगिक कैसे है। आवश्यकता पर '.js' जोड़ने से विंडोज पर समस्या हल नहीं होती है।
डैन डस्केल्सस्कु

1
@DanDascalescu: मुझे लगता है कि आपने उत्तर को गलत समझा। उस उत्तर में दिया गया कोड Node.js का एक कोड है, जो दिखाता है कि आपके लिए आवश्यक पैकेज कैसे दिखता है। इसलिए यदि आप समझते हैं कि यह फ़ाइलों के लिए कहां और कैसे दिखता है, तो आप अपनी समस्या को अधिक आसानी से हल कर सकते हैं।
अमोल एम कुलकर्णी


के अनुसार stackoverflow.com/questions/5817874/... जी हमेशा के लिए स्थापित NPM
शरीफ Yazdian

जवाबों:


349

नामक एक पर्यावरण चर जोड़ें NODE_PATHऔर इसे %USERPROFILE%\Application Data\npm\node_modules(विंडोज एक्सपी), %AppData%\npm\node_modules(विंडोज 7/8/10) पर सेट करें, या जहां भी एनपीएम आपके विंडोज स्वाद पर मॉड्यूल स्थापित करने के लिए समाप्त होता है। इसे एक बार और सभी के साथ करने के लिए, सिस्टम गुण संवाद (रन control.exe sysdm.cpl,System,3) के उन्नत टैब में इसे सिस्टम चर के रूप में जोड़ें ।

विंडोज 7+ में त्वरित समाधान बस चलाना है:

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

यह उल्लेख के लायक है कि NODE_PATHकेवल नोड ऐप में मॉड्यूल आयात करते समय उपयोग किया जाता है। जब आप अपने सीएलआई में विश्व स्तर पर स्थापित मॉड्यूल के बायनेरिज़ का उपयोग करना चाहते हैं, तो आपको इसे अपने हिस्से में भी जोड़ना होगा PATH, लेकिन बिना node_modulesभाग के (उदाहरण के लिए %AppData%\npmविंडोज 7/8/10 में)।


पुरानी कहानी

मैं अपने आप को नोड के लिए बहुत नया हूँ। इसलिए मैं पूरी तरह से सही नहीं हो सकता लेकिन अपने अनुभव से यह इस तरह से काम करता है:

  1. -g वैश्विक पुस्तकालयों को स्थापित करने का एक तरीका नहीं है, यह केवल उन्हें सिस्टम पथ पर रखने का एक तरीका है ताकि आप उन्हें पूरा रास्ता लिखे बिना कमांड लाइन से बुला सकें। यह उपयोगी है, उदाहरण के लिए, फिर नोड ऐप स्थानीय फ़ाइलों को परिवर्तित कर रहा है, जैसे कम - यदि आप इसे विश्व स्तर पर स्थापित करते हैं तो आप इसे किसी भी निर्देशिका में उपयोग कर सकते हैं।
  2. स्वयं नोड। npm वैश्विक dir को नहीं देखता था, यह आवश्यक फ़ाइलों को खोजने के लिए एक अन्य एल्गोरिथ्म का उपयोग कर रहा है: http://nodejs.org/api/modules.html#modules_file_modules (मूल रूप से पथ में प्रत्येक फ़ोल्डर को स्कैन करना, शुरू करना नोड_मॉडल फ़ोल्डर के लिए वर्तमान से और इसे जांचता है)।

अधिक विवरण के लिए समान प्रश्न देखें: मैं एनपीएम का उपयोग करके विश्व स्तर पर एक मॉड्यूल कैसे स्थापित करूं?


17
बहुत बहुत धन्यवाद, आपके द्वारा दिए गए लिंक बहुत सहायक हैं, मैं अब बहुत स्पष्ट हूं, हालांकि मॉड्यूल-खोज एल्गोरिथ्म थोड़ा जटिल दिखता है। अंत में मैं वैश्विक मॉड्यूल पथ का संदर्भ देने के लिए पर्यावरण चर NODE_PATH का उपयोग करता हूं set NODE_PATH=C:\Documents and Settings\DevUser\Application Data\npm\node_modules, और यह उम्मीद के मुताबिक काम करता है। यह अजीब है कि विंडोज पर विश्व स्तर पर स्थापित मॉड्यूल '% USERPROFILE% \ Application Data \ npm \ नोड_modules' में स्थित हैं, इस बीच, NODE_PATH में उद्धरण चिह्न नहीं हो सकते।
कोस्मोर

2
मदद करने में खुशी। क्या NODE_PATH ने मानक नोड के लिए ब्रेक नहीं किया है। जैसे मॉड्यूल, FS?
एलेक्सी इवानोव

2
यहां तक ​​कि मैं सोच रहा था कि मेरे C:\Program Files\nodejs\node_modules\npm\node_modulesपास वह मॉड्यूल क्यों नहीं है जिसे मैंने अभी उपयोग किया है npm install -g expressऔर यह उपलब्ध थाC:\Documents and Settings\swapnil\Application Data\npm\node_modules
स्वप्निल म्हस्के

1
विंडोज 8 में पथ है%USERPROFILE%\AppData\Roaming\npm\node_modules
यार

9
यदि आप यह पता लगाना चाहते हैं कि आपकी वैश्विक नोड_मॉडल्स निर्देशिका कहां है, तो कमांड चलाएं npm list -g। आउटपुट की पहली पंक्ति ग्लोबल नोड_मॉडल्स डायरेक्टरी की जनक होगी - दूसरे शब्दों में, ग्लोबल नोड_मॉडल्स डायरेक्टरी है {output}\node_modules। जब आप चलाते हैं तो यह इंस्टॉल डायरेक्टरी को भी प्रिंट करता हैnpm install --global {xyz}
काउलिनेटर

34

यदि आप windows7 प्लेटफॉर्म में हैं, तो शायद आपको NODE_PATH को इस तरह बदलना चाहिए: %AppData%\npm\node_modules


7
यह विंडोज 8 पर appdata \ रोमिंग में है
जॉनी राया

6
मैं विंडोज़ 8.1 पर npm 2.5.1 के साथ हूं, और मैंने अपने NODE_PATH को दस्तावेज के रूप में सेट किया है, लेकिन यह अभी भी मेरे इंस्टॉल किए गए पैकेजों को नहीं पा रहा है। विचार?
JaXXz

5
विंडोज़ 10 में यह बस 3% होना चाहिए AppData% \
npm

मेरे मामले में (W10) यह% AppData% \ Roaming \ npm था
हेनरिक

32

मुझे पता है कि मैं एक ज़ोंबी जगा सकता हूं, लेकिन मुझे लगता है कि यह अभी भी एक समस्या है, अगर आपको विंडोज 7 पर नोड मॉड्यूल की वैश्विक पहुंच की आवश्यकता है तो आपको इसे अपने वैश्विक चर पथ में जोड़ने की आवश्यकता है:

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

महत्वपूर्ण: केवल इस node_modulesभाग के बिना , मुझे यह देखने के लिए आधा घंटा लगा।


4
वैकल्पिक रूप से, विंडोज 8 उपयोगकर्ताओं के लिए% USERPROFILE% \ AppData \ Roaming \ npm
बेन्सन

4
node_modulesभाग को हटाने की सलाह के लिए धन्यवाद , इससे भी जूझ रहे थे!
danguilherme

20

इसे विंडोज़ 10 पर काम करने के लिए मैंने इसे %USERPROFILE%\AppData\Roaming\npmअपने PATH में फ़ोल्डर जोड़कर हल किया । करने के बाद \node_modulesइस तरह संलग्न: %USERPROFILE%\AppData\Roaming\npm\node_modules\मेरे लिए काम नहीं किया।


7
या, अधिक बस, `% AppData% \ npm`
दान डिप्लो

यार यह अजीब है कि काम किया! मैं इस मुद्दे पर दो दिनों से वस्तुतः शिकार कर रहा हूँ। यह मेरे द्वारा आजमाया गया सबसे अस्पष्ट समाधान है और पहला काम है। बहुत बहुत धन्यवाद।
विल

हां बस pathपर्यावरण वैरिएबल में जोड़ें , फिर हम इसे सीधे विंडोज़ 10 में चला सकते हैं
झू ज़ियाओउ


14

मैं सिर्फ इस नोड के ब्लॉग पोस्ट से उद्धरण करूँगा ...

सामान्य तौर पर, अंगूठे का नियम है:

  • यदि आप किसी ऐसी चीज को स्थापित कर रहे हैं जिसे आप अपने प्रोग्राम में उपयोग करना चाहते हैं, तो आवश्यकता ('जो भी हो) का उपयोग करके, फिर इसे स्थानीय रूप से, अपने प्रोजेक्ट के रूट पर स्थापित करें।
  • यदि आप कुछ ऐसा स्थापित कर रहे हैं जिसे आप अपने शेल में उपयोग करना चाहते हैं, तो कमांड लाइन या कुछ और पर, इसे विश्व स्तर पर स्थापित करें, ताकि इसके बायनेरी आपके पैठ पर्यावरण चर में समाप्त हो जाएं।

...

बेशक, कुछ मामले हैं जहां आप दोनों करना चाहते हैं। कॉफी-स्क्रिप्ट और एक्सप्रेस दोनों ऐसे ऐप्स के अच्छे उदाहरण हैं जिनमें कमांड लाइन इंटरफ़ेस है, साथ ही एक लाइब्रेरी भी है। उन मामलों में, आप निम्न में से एक कर सकते हैं:

  1. इसे दोनों जगहों पर स्थापित करें। गंभीरता से, क्या आप डिस्क स्थान पर कम हैं? यह ठीक है, वास्तव में है। वे छोटे जावास्क्रिप्ट प्रोग्राम हैं।
  2. इसे विश्व स्तर पर स्थापित करें, और फिर npm लिंक कॉफ़ी-स्क्रिप्ट या npm लिंक एक्सप्रेस (यदि आप एक ऐसे प्लेटफ़ॉर्म पर हैं जो प्रतीकात्मक लिंक का समर्थन करता है।) तो आपको केवल सभी साइमलिंक को अपडेट करने के लिए ग्लोबल कॉपी को अपडेट करना होगा।

10
They’re tiny JavaScript programs.इन पुस्तकालयों में से कुछ निश्चित रूप से छोटे नहीं हैं!
UpTheCreek

1
@UpTheCreek मुझे विश्वास है कि वह डिस्क स्थान के दायरे में आकार की बात कर रहा था। वे टेक्स्ट फाइलें हैं। वे वस्तुनिष्ठ रूप से छोटे हैं।
फिलिप

12

इसे छोटा करने के लिए, npm link jadeअपने ऐप डायरेक्टरी में उपयोग करें।


4
ऐसा लगता है कि यह npm link jadeविंडोज पर काम नहीं कर सकता है, npm ERR! Error: npm link not supported on windows
npm

1
यह अब संस्करण v0.8.9 के रूप में करता है
पी।

@beyonddoor: आपको npm linkएक प्रशासक कमांड विंडो से चलने की जरूरत है ।
मचिफ

12

पर्यावरण चर को जोड़ने / संपादित करने का प्रयास किया गया और निष्कर्ष निकाला गया कि:

  1. निचले हिस्से के User variablesबजाय System variables( ऊपरी बॉक्स का) संपादित करें / जोड़ें ; अन्यथा आपको इसे काम करने के लिए "व्यवस्थापक के रूप में चलाना" होगा।
  2. संलग्न ;%AppData%\npmकरने के लिए Pathआदेश में एक कमांड लाइन उपकरण के रूप में उपयोग करने के लिए (यदि तरह का समर्थन किया, jshintऔर grunt-cli)।
  3. प्रोजेक्ट निर्देशिका में इसे स्थापित किए बिना स्क्रिप्ट में बनाएं NODE_PATHऔर सेट करें । (लेकिन इस आवश्यकता के लिए सुझाव दिया जाता है यदि आप ओएस पर काम कर रहे हैं जैसे विस्टा और नए।)%AppData%\npm\node_modulesrequire('<pkg_name>')npm linkmklink

परीक्षण का वातावरण:

  • विन 7 (एंट।, 64-बिट, SP1), Node.js 4.2.4, npm 2.14.12
  • जीत 8.1 (प्रवेश।, 64-बिट), Node.js 0.10.30, npm 1.4.21

9

मेरे पास काम करने के लिए वैश्विक मॉड्यूल प्राप्त करने का एक भयानक समय था। आखिरकार, मैंने C:\Users\yourusername\AppData\Roaming\npmसिस्टम वेरिएबल्स के तहत स्पष्ट रूप से PATH चर में जोड़ा । सूची में नोडज पथ चर से पहले मुझे यह चर भी आना चाहिए था।

मैं विंडोज 10 चला रहा हूं।


यह केवल एक चीज है जो मेरे लिए काम करती है। विंडोज़ पर चल रहा है 8
चार्ली कार्वर

1
यह केवल एक चीज है जो मेरे लिए भी काम करती है, धन्यवाद!
डेक्कन

6

मैं इस मुद्दे पर विंडोज 7 पर चला, चल रहा है

npm install -g gulp

सामान्य उपयोगकर्ता के रूप में लॉग ऑन करते समय व्यवस्थापक के रूप में।

समाधान: जब सामान्य उपयोगकर्ता के रूप में एक ही इंस्टॉलेशन निष्पादित किया जाता है (cmd के लिए "एडमिन के रूप में नहीं") सब ठीक था। मुझे लगता है कि यह डिफ़ॉल्ट इंस्टॉल और खोज पथ से संबंधित है।


1
इस बिंदु को थोड़ा और स्पष्ट करने के लिए ... जब नोड को एक व्यवस्थापक के रूप में स्थापित किया जाता है, तो यह प्रशासक वैश्विक नोड मॉड्यूल फ़ोल्डर के संदर्भ को शामिल करने के लिए सिस्टम पथ को अद्यतन करता है। जब एक नया उपयोगकर्ता विश्व स्तर पर कुछ स्थापित करता है तो वह एक अलग नोड मॉड्यूल फ़ोल्डर में स्थापित होता है। नोड स्थापित करने वाले उपयोगकर्ता के अलावा प्रत्येक उपयोगकर्ता को अपने वैश्विक नोड मॉड्यूल फ़ोल्डर को शामिल करने के लिए अपने पथ को अपडेट करने की आवश्यकता होगी। यदि आप उसी खाते पर नोड इंस्टॉल करते हैं और उपयोग करते हैं तो यह आवश्यक नहीं होगा।
dpsthree

विंडोज 8.1 प्रो के साथ नोड्स v6.9.4, पथ रन को सेट करने के लिए: C: \ Program Files \ n नोड्स \ नोडवार्स.बैट
14:70 पर Robot70

4

Win8.1 एनपीएम के साथ मेरी एक्सपायरी से मॉड्यूल स्थापित करता है, C:\Users\[UserName]\AppData\Roaming\npm\node_modules लेकिन डंपली उन्हें खोजता है C:\Users\[UserName]\node_modules

पूर्ण पथ द्वारा आवेदन में एक सरल समाधान संदर्भ मॉड्यूल:

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

4

खिड़कियों के लिए, हर किसी ने कहा कि आपको नोडज और एनपीएम मॉड्यूल के लिए पर्यावरण चर सेट करना चाहिए, लेकिन क्या आप जानते हैं कि क्यों? कुछ मॉड्यूल के लिए, उनके पास कमांड लाइन टूल है, मॉड्यूल स्थापित करने के बाद, सी: \ प्रोग्राम फाइल \ नोडज में .cmd फ़ाइल , और यह विंडो कमांड में लॉन्च के लिए उपयोग किया जाता है। इसलिए यदि आप cmd फ़ाइल वाले पथ को पर्यावरण चर % PATH% से नहीं जोड़ते हैं , तो आप उन्हें सफलतापूर्वक कमांड विंडो के माध्यम से लॉन्च नहीं करेंगे।


2

मैं एक ही मुद्दा था, के साथ bower स्थापित करने की कोशिश कर रहा npm install -g bower

मुझे लगता है कि यह इसलिए था क्योंकि नोड किसी अन्य उपयोगकर्ता द्वारा स्थापित किया गया था , मुझे नहीं।

मैंने नोड की स्थापना रद्द की, और फिर मैंने इसे पुनः इंस्टॉल किया। स्थापना के दौरान, मैंने इस पाठ को PATH> npm मॉड्यूल में विकल्प के लिए देखा :

नोड स्थापना में संदेश

यहां छवि विवरण दर्ज करें

नोड स्थापना के बाद, मैंने npm install -g bowerफिर से निष्पादित किया। और अब बोवर काम करता है।

निश्चित रूप से मेरे जैसे उपयोगकर्ता के साथ नोड को पुनर्स्थापित करना आवश्यक नहीं है। समाधान NODE_PATH या PATH चर के माध्यम से होना चाहिए , जैसा कि अन्य उपयोगकर्ताओं ने समझाया है।

यह केवल यह टिप्पणी करने के लिए है कि यह समस्या केवल तब होती है जब नोड किसी अन्य उपयोगकर्ता द्वारा स्थापित किया गया हो (या यदि स्थापना के दौरान विकल्प PATH> npm मॉड्यूल में चिह्नित नहीं किया गया है)।



1

वैकल्पिक रूप से आप ~/.npmrcसही उपसर्ग जोड़ सकते हैं । मुझे C:\Program Files\nodejs64 विन 7 के लिए मिला है ।


1

मैं इस सवाल पर अड़ गया क्योंकि मैं अपने नए कंप्यूटर पर विंडोज़ 10 के साथ दृश्य स्टूडियो 2015 के साथ नोड.जेएस का उपयोग करना चाहता हूं। मैंने विंडोज 7 और 8 पर 8.1. नोड का उपयोग किया है और 8.1 कभी भी एक समस्या नहीं है। मॉड्यूल की तलाश में। मैं एक विरासत नोड का उपयोग करता हूं। 0.10.39s क्योंकि मुझे इस संस्करण का उपयोग सीरियल और RFXCOM मॉड्यूल के कारण करना है।

विंडोज़ 10 के लिए उत्तर NODE_PATH को C: \ Users \ User \ node_modules के साथ एनवायरमेंट चर में सेट करना है।


1
एर कोई। (विंडोज 10 यहां ..) मैं कुछ मॉड्यूल C:\Users\User\node_modules देखता हूं , मैं कुछ मॉड्यूल C:\Users\User\AppData\Roaming\npm\node_modules देखता हूं , मैं कुछ मॉड्यूल C:\Users\User\node_modules भी देख रहा हूं , C:\Program Files (x86)\nodejs\node_modules\npm\node_modules यह सुनिश्चित नहीं है कि यह कैसे होता है। कौन सा है, और वे इसे इस तरह क्यों करेंगे?
zipzit

1

विंडोज 10 के लिए, मुझे फ़ोल्डर में स्थानीय रूप से स्थापित करना पड़ा:

C: \ Users \ MyAccount \ AppData \ रोमिंग \ NPM \ node_modules

npm install gulp

यह मेरे "gulp मान्यता प्राप्त नहीं है" का मुद्दा


0

बस इस से नोड को डाउनलोड और फिर से इंस्टॉल करें और यह सभी पथ मुद्दों को ठीक कर देगा।

अपने कमांड प्रॉम्प्ट या टर्मिनल को पुनरारंभ करना न भूलें।


0

उपरोक्त सभी उत्तर मेरे काम नहीं आए। केवल एक चीज जो अंततः काम करती थी, वह थी AppData% \ npm को पर्यावरण पथ चर में जोड़ना, और C: \ Program Files \ नोडज में दो एनजी फाइलों को हटाना।

एनजी पैकेज सी: \ प्रोग्राम फाइल्स \ नोडज्स \ नोड_मॉड्यूल्स में स्थापित नहीं किए गए थे, इसलिए यह स्पष्ट था कि नोड्ज निर्देशिका से एनजी बाइनरी का उपयोग करने से काम नहीं चलेगा।

मुझे यकीन नहीं है कि यह इस निर्देशिका में क्यों खोजा गया है, क्योंकि मैंने पहले ही कॉन्फ़िगर किया है - PATH पर्यावरण चर - .npmrc सी में: \ Users \ MyUser - सिस्टम चर और / या NODE_PATH जोड़ने की कोशिश की


-4

यदि आप विंडोज़ का उपयोग कर रहे हैं, तो यह कुछ कदम उठाता है, 1) एक फाइल बनाते हैं, जिसे पैकेज कहा जाता है

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

जहां हैलो पैकेज का नाम है और * का अर्थ है आपकी निर्भरता का नवीनतम संस्करण

2) आप के लिए कोड निर्देशिका निर्देशिका और निम्नलिखित आदेश चलाते हैं

npm स्थापित करें

यह निर्भरता को स्थापित करता है


4
यह इसे विश्व स्तर पर स्थापित नहीं करता है (जो सवाल पूछता है)। यह निर्भरता को ऐप में खींचता है
bryanmac

मैंने विश्व स्तर पर स्थापित मॉड्यूल को पहचानने के लिए अपने नोड.जेएस इंस्टॉलेशन के लिए प्रयास करने और मनाने के लिए ऊपर सूचीबद्ध सभी चीज़ों की कोशिश की है, और इसमें से कोई भी काम नहीं करता है। नोड (v8.11.3 LTS) को अनइंस्टॉल करने और पुन: स्थापित करने के बाद भी, हर बार जब मैं नोड ("mongodb") कमांड को नोड .js स्क्रिप्ट में जारी करने का प्रयास करता हूं, तो मुझे SAME त्रुटि मिलती है: "मॉड्यूल mongbb को नहीं खोज सकता"। फिर भी, अगर मैं "npm ll -g mongodb" कमांड जारी करता हूं, तो NPM बताता है कि मॉड्यूल स्थापित है। किसी ने मुझे इस समस्या के साथ काम करता है कि कृपया कुछ जानकारी दे सकते हैं?
डेविड एडवर्ड्स

अद्यतन: ऊपर Saulius एक समाधान प्रदान किया गया है जो वास्तव में काम करता है, अर्थात् जावास्क्रिप्ट में मॉड्यूल के पूर्ण पथ को निर्दिष्ट करने के लिए कथन की आवश्यकता होती है। लेकिन अगर स्थापित मॉड्यूल के लिए गलत फ़ोल्डरों में खोज करने वाले नोड.जेएस के बारे में उनका कहा गया अवलोकन सही है, तो क्या कोई नोड नोडर्स को इसके लिए सचेत कर सकता है? क्योंकि समस्या अभी भी v8.11.3 LTS को प्रभावित कर रही है।
डेविड एडवर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.