2012-02-03 17 views
13

करने के लिए मॉड्यूल स्थापित करने मैं इस पोस्ट से निर्देशों का उपयोग कर Node.js के लिए NVM स्थापित किया है:नोड संस्करण प्रबंधक (NVM) NPM आम फ़ोल्डर

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

मैं नोड संस्करण के बीच स्विच और फिर NPM का उपयोग करते हैं मॉड्यूल स्थापित करने के लिए, सभी मॉड्यूल को नोड के उस संस्करण के लिए विशिष्ट 'node_modules' निर्देशिका में बजाय 'node_modules' फ़ोल्डर (~/node_modules /) में रखा गया है?

इसका समाधान कैसे करें इस पर कोई विचार?

उत्तर

29

https://github.com/creationix/nvm/pull/97 से टिप्पणी के आधार पर:

जब वैश्विक स्विच का उपयोग जी पैकेज उचित निर्देशिका में समाप्त होता है NPM साथ संकुल स्थापित करने (यानी .nvm/$ संस्करण/lib/node_modules) हालांकि, नोड की आवश्यकता नहीं है क्योंकि यह किसी भी तरह से इसके उपसर्ग पर नहीं खोज रहा है।

तो npm install -g xxxxx का उपयोग कर NVM लिए उचित स्थान पर मॉड्यूल रखा जाएगा, लेकिन यदि आप मॉड्यूल नहीं मिल रहा है उनमें से require एक नोड का प्रयास करें। मैं अभी भी इसके साथ खेल रहा हूं और अगर मुझे कोई समाधान मिल जाए तो अपडेट हो जाएगा।

अद्यतन

कहाँ NPM डाल node_modules करता है? (https://docs.npmjs.com/files/folders देख)

  • स्थानीय (डिफ़ॉल्ट) स्थापित: वर्तमान पैकेज जड़ की ./node_modules में सामान डालता है।
  • वैश्विक इंस्टॉल (साथ-जी): सामान/usr/स्थानीय में रखता है या जहां भी नोड स्थापित होता है।
  • यदि आप require() पर जा रहे हैं तो इसे स्थानीय रूप से इंस्टॉल करें।
  • यदि आप इसे कमांड लाइन पर चलाने के लिए जा रहे हैं तो इसे वैश्विक रूप से इंस्टॉल करें।
  • यदि आपको दोनों की आवश्यकता है, तो इसे दोनों स्थानों पर स्थापित करें, या npm link का उपयोग करें।

तो क्या मैं (http://npmjs.org/doc/init.html देखें) npm init चलाया गया था किया था अपनी परियोजनाओं जड़ dir जो package.json उत्पन्न में। अब जब मैं npm install xxxxx चलाता हूं तो यह मेरे प्रोजेक्ट फ़ोल्डर में एक node_modules dir बनाता है (जिसे मैं अपने .gitignore में जोड़ता हूं)। यह मॉड्यूल के लिए काम करता है जो मुझे अपने कोड में आवश्यक है।

कॉफीस्क्रिप्ट I जैसे आदेशों के लिए npm install -g coffee-script के साथ स्थापित करें जो इसे सही निर्देशिका (.nvm/$ संस्करण/lib/node_modules) में रखता है। जबकि मुझे इन मॉड्यूल की आवश्यकता नहीं हो सकती है (एनपीएम लिंक को इस समस्या को हल करना चाहिए) मैं कमांड चला सकता हूं - यानी coffee

+0

अंत में इसका एक अच्छा जवाब, थोड़ी देर के लिए मेरे सिर पर टक्कर लगी। –

1

मैंने अभी वैश्विक स्तर पर एक्सप्रेस स्थापित किया है (-g) और आवश्यकता होने पर समस्या हो रही है ("एक्सप्रेस")। जेसी वोगेट की तरह ही मैंने कहा कि मैंने अभी एक्सप्रेस को पुनर्स्थापित किया है, लेकिन इस बार बिना इस तरह: "सुडो एनपीएम एक्सप्रेस इंस्टॉल करें" और अब पूरी तरह से काम कर रहा है!

+0

क्या आप समझा सकते हैं कि यह क्यों काम करता है? –

+0

आपके साथ ईमानदार होना; मुझे नहीं पता, मैं इसके साथ बहुत नौसिखिया हूँ। हालांकि, जेसी छोड़ने वाले वेब पर सर्फिंग (https: //docs.npmjs।com/getting-start/install-npm-packages-localally) मुझे निम्न मिला: "यदि आप नोड की आवश्यकता जैसे कुछ का उपयोग करके अपने मॉड्यूल से पैकेज पर निर्भर होना चाहते हैं, तो आप स्थानीय रूप से स्थापित करना चाहते हैं ..." मुझे बहुत अच्छी तरह से अंतर नहीं समझा जाता है लेकिन निश्चित रूप से यदि आपको सर्वर चलाने के लिए आवश्यकता() का उपयोग करने की आवश्यकता है तो आप स्थानीय रूप से स्थापना (w/o theg) स्थापित करेंगे, क्योंकि यह मेरे लिए काम करता है। –

+0

विस्तृत करने के लिए धन्यवाद :) –

संबंधित मुद्दे