ग्लोबल नोड मॉड्यूल सही ढंग से स्थापित नहीं हो रहा है। आदेश नहीं मिला


82

मुझे वैश्विक नोड मॉड्यूल स्थापित करने में समस्या हो रही है और मुझे जो कुछ भी ऑनलाइन मिल रहा है वह कहता है कि समाधान सिर्फ -g जोड़ना है। जो समस्या नहीं है। मेरा मानना ​​है कि यह एक लिंकिंग मुद्दा या गलत निर्देशिका मुद्दा है।

ये है जो मैं करता हूं:

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

हालाँकि जब मैं इसे काम करने के लिए डायरेक्ट लिंक लोकेशन चलाता हूँ:

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

जहां मॉड्यूल है:

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

मेरे .bash_profile में मेरे पास है:

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

क्या मुझे सही फ़ोल्डर में डाउनलोड करने के लिए अपने नोड वातावरण को बदलने की आवश्यकता है? क्या कुछ सही से लिंक नहीं हो रहा है? मै खो गया हूँ..

धन्यवाद!

अन्य विवरण:

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2

1
यह इसलिए है क्योंकि / usr / स्थानीय / शेयर / npm / बिन / आपके शेल के $ PATH में नहीं है। इसलिए शेल नहीं मिल रहा है express
जेपी रिचर्डसन

2
मैंने जोड़ा: PATH = / usr / local / share / npm / bin: $ PATH को मेरे .bash_profile पर निर्यात करें और यह काम करे। धन्यवाद! एक उत्तर जोड़ें ताकि मैं इसे स्वीकार कर सकूं और उत्थान कर सकूं।
im_benton

मेरे मामले में, भी OSM पर सेलर के माध्यम से स्थापित NPM, मेरा binपथ, जिसे मैंने .bash_profile में सेट किया है, वह है:export PATH=$PATH:/usr/local/Cellar/node/10.5.0/bin
शेन

जवाबों:


63

$(npm get prefix)/binअपने में जोड़ें PATH(जैसे, में .bashrc), जैसे:

echo "export PATH=$PATH:$(npm get prefix)/bin" >> ~/.bashrc

अधिक जानकारी के लिए, देखें npm help npm:

वैश्विक मोड: npm उपसर्ग / lib / node_modules में स्थापित उपसर्ग में संकुल को अधिष्ठापित करता है और उपसर्ग / बिन में डिब्बे स्थापित होते हैं।

आप के साथ npm get prefixया उपसर्ग स्थापित कर सकते हैं npm config list | grep prefix


क्या nvm का उपयोग करने वाले गैर sudo के लिए, पथ को .bash_profile $HOME/.npmया .bashrc के लिए नहीं होना चाहिए ? मैं एनवीएम का उपयोग करता हूं, इसलिए यह सुनिश्चित करना चाहता हूं कि इस पर चीजों को बांधने से पार न करें।
धब्बा

ओएसएक्स पर होमब्रेव के माध्यम से नोड और एनपीएम स्थापित करने वाले किसी के लिए, बिन फ़ोल्डर का स्थान जिसे आपको जोड़ना PATHहोगा /usr/local/Cellar/node/VERSION_NUMBER/bin/
जॉन बेट्स

135

इसका मतलब यह हो सकता है कि आपका नोड प्रीफ़िक्स स्थापित नहीं है जो आप उम्मीद करते हैं।

आप इसे इस तरह सेट कर सकते हैं:

npm config set prefix /usr/local

तो npm install -gफिर से चलाने की कोशिश करें, और इसे काम करना चाहिए। मेरे लिए एक मैक पर काम किया, और समाधान इस साइट से आता है:

http://webbb.be/blog/command-not-found-node-npm/

संपादित करें: ध्यान दें कि मैं अभी एक नए मैक पर फिर से इस पर आया हूं जिसे मैं स्थापित कर रहा हूं, और इस प्रक्रिया को करना था स्टैकओवरफ्लो पर यहां विस्तृत रूप से करना था।


मैं उपयोग कर रहा हूं nodenvऔर मेरे मामले के लिए इस मुद्दे को हल करने का एक बेहतर तरीका है। हालांकि, आपके समाधान ने एक त्वरित और गंदे फिक्स के रूप में काम किया! मैंने तब उपसर्ग को वापस उपसर्ग पर स्विच किया nodenvऔर मैं पैकेज को चलाने में सक्षम था /usr/local path। धन्यवाद!
गैरेट टैकोरोनेट

3
मैंने इसे ठीक करने के लिए महीनों का समय बिताया है और यह एकमात्र उत्तर है जो मैंने देखा है कि यह मेरे लिए तय है! आपका बहुत - बहुत धन्यवाद।
अज़0r

यह अभी भी मेरे लिए काम नहीं करता है। मैं क्या कर सकता हूँ? मैं win7 पर वैश्विक रूप से टाइपस्क्रिप्ट स्थापित करना चाहता हूं।
Artimal

1
मैंने बहुत सारे उपाय आजमाए लेकिन केवल एक ने ही मेरे लिए यह किया। किसी कारण से मेरा उपसर्ग तब /Users/(username)/.npm-globalभी सेट हो गया था जब मैंने हर चीज की एक ताजा स्थापना की थी। मैं भी एक मैक पर हूँ
Castilho

यदि आपने सेलर के माध्यम से नोड स्थापित किया है तो यह आपको तोड़ देगा।
शेन

12

मेरे npm को वैश्विक पैकेज भी नहीं मिले। मैंने वही किया जो ब्रैड पार्क ने सुझाया था:

npm config set prefix /usr/local

तब मुझे एक EACCES अनुमतियां मिलीं (DON'T USE sudo npm install -g <package>) और इसे आधिकारिक npm डॉक्स के माध्यम से ठीक किया गया: https://docs.npmjs.com/resolve-eacces-permissions-errors-when-installing-packages-glo विश्व स्तर पर

  1. अपने होम डायरेक्टरी में कमांड लाइन पर, वैश्विक संस्थापनों के लिए एक निर्देशिका बनाएँ:
 mkdir ~/.npm-global
  1. नई निर्देशिका पथ का उपयोग करने के लिए npm कॉन्फ़िगर करें:
 npm config set prefix '~/.npm-global'
  1. अपने पसंदीदा पाठ संपादक में, एक ~ / .profile फ़ाइल खोलें या बनाएं और इस पंक्ति को जोड़ें:
 export PATH=~/.npm-global/bin:$PATH
  1. कमांड लाइन पर, अपने सिस्टम चर को अपडेट करें:
 source ~/.profile
  1. फिर विश्व स्तर पर एक पैकेज स्थापित करें और इसका परीक्षण करें! उदाहरण के लिए:
npm install -g awsmobile-cli
awsmobile configure


हाय सब, मैं सवाल है। चरण 2 के बाद, मैं नहीं मिल रहा है bin / में ~ / .npm-वैश्विक । तो, यह काम नहीं करता है, है ना?
कुंभ राशि

यह अभी भी काम करना चाहिए। यह मत भूलो कि export PATH=~/.npm-global/bin:$PATHलाइन ~ / .profile फ़ाइल में है। आपको कोई त्रुटि मिलती है?
विसेंट

6

मेरे मामले में, NODE_PATH वातावरण चर खाली था। जांचें कि क्या यह खाली है-

echo $NODE_PATH

यदि NODE_PATH खाली है। फिर ~ / .bash_profile बदलें और NODE_PATH जोड़ें

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

अब npm मॉड्यूल फिर से स्थापित करें और जांचें कि क्या पथ पर स्थापित किया जा रहा है npm root -g


यह! NVM का उपयोग करते समय मेरा मुद्दा है और उत्तर की आवश्यकता है कि यह लिनक्स / फेडोरा पर वैश्विक पैकेजों की तलाश में है
रे फॉस

4

मैं sudo के माध्यम से कभी भी कोई npm सामान स्थापित नहीं करता हूँ ! मेरे पास अपने कारण हैं, लेकिन मैं बस चीजों को सरल रखने की कोशिश करता हूं, और उपयोगकर्ता आधारित है, क्योंकि यह एक उपयोगकर्ता विकास की दुनिया है, और सभी की जड़ तक पहुंच नहीं है, और रूट / सुडोल इस तरह की चीजों को स्थापित करना बस चीजों को शुरू करने के लिए अव्यवस्थित लगता है। साथ में। आखिरकार, सभी डेवलपर्स को इन निर्देशों का पालन करने में सक्षम होना चाहिए, न कि केवल विशेषाधिकार प्राप्त sudo उपयोगकर्ताओं को।

यह विशेष प्रणाली SSH के माध्यम से एक्सेस किया गया RHEL7 है:

बार-बार किसी को नोड के विभिन्न संस्करणों की आवश्यकता होती है, इसलिए मैं NVM https://github.com/creationix/nvm का उपयोग करता हूं

तो उस ने कहा, मैं आपको -gएनवीएम, एनपीएम और नोड रास्तों का उपयोग करके वैश्विक इंस्टॉल के लिए एक काम करने का उदाहरण दिखा सकता हूं ।

.npm-packagesयदि यह पहले से ही नहीं है , तो अपना उपसर्ग सेट करें । (ध्यान दें, एक हाइफ़न, एक अंडरस्कोर नहीं है)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

फिर अपनी ~ / .bash_profile या .bashrc को समायोजित करें यदि आप निम्न जानकारी के साथ यहाँ क्यों और किस पर रीडअप पसंद करते हैं।

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

यह बहुत ज्यादा सभी रास्तों को कवर करता है। उदाहरण के लिए, यदि आप इस तरह से गपशप स्थापित करते हैं तो npm install -g gulpयह सहानुभूति रखता है ~/.npm-packages/bin(ध्यान दें कि एक हाइफ़न है, एक अंडरस्कोर नहीं है)। ( gulp-cliया के लिए कोई ज़रूरत नहीं है gulp-cl)

आप अन्य सभी नोड पथ निर्यातों को बहुत बदल सकते हैं / टिप्पणी कर सकते हैं। आप इस पथ जानकारी को किसी भी अन्य पथ जानकारी के नीचे रख सकते हैं जो आपके पास पहले से ही सुरक्षित रूप से है, बिना उस सामान को ओवरराइट किए।


1
  1. निम्नलिखित लाइन को अपने में जोड़ें ~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. लोड बैश प्रोफाइल

    bash -l
    


0

समस्या यह है कि मैं बायनेरिज़ को याद कर रहा था क्योंकि मेरे घर निर्देशिका में उपयोगकर्ता विशिष्ट .npmrc फ़ाइल को bin-linksसेट किया गया था false, हालाँकि default is true

बस के मामले में यह आपकी समस्या की जाँच है कि आपकी .npmrc फ़ाइलों में से कोई भी इसे गलत पर सेट नहीं करती है।

फिर सभी मॉड्यूल को फिर से स्थापित करने से बायनेरिज़ का निर्माण होगा, prefixताकि आप PATHउन्हें देख सकें।


0

अपने वैश्विक नोड मॉड्यूल के बाइनरी फ़ोल्डर की जांच करें, और इसे अपने $ पेट में जोड़ें।

npm list -g | head -1

यदि आप nodenv का उपयोग करते हैं, तो जब भी आप वैश्विक नोड संस्करण स्थापित करते हैं, तो मार्ग बदल जाएगा। इस तरह से रास्ता जोड़ने से मेरी समस्या हल हो जाती है।

"$HOME/.nodenv/versions/$(nodenv global)/bin"

Zsh के लिए रास्ता जोड़ने के लिए शॉर्टकट

$ echo 'export PATH="$HOME/.nodenv/versions/$(nodenv global)/bin"' >> ~/.zshrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.