2011-02-27 14 views

उत्तर

4

मुझे विश्वास है कि चिंता यह है कि इसे सेट के बजाए रन टाइम पर बार-बार संशोधित किया जा सकता है। यह स्पष्ट रूप से भ्रमित हो सकता है और कुछ विचित्र बग का कारण बन सकता है। इसके अलावा, यदि व्यक्तिगत संकुल पथ को संशोधित करते हैं तो परिणाम विश्व स्तर पर लागू होते हैं, जो वास्तव में खराब होता है और नोड की मॉड्यूलर प्रकृति के खिलाफ जाता है।

यदि आपके पास अपने स्वयं के कई लाइब्रेरी पथ हैं, तो सबसे अच्छा समाधान नोड लॉन्च करने से पहले NODE_PATH पर्यावरण चर सेट करना है। नोड तब लॉन्च होने पर इसे उठाता है और इसे स्वचालित रूप से लागू करता है।

+2

जिसके लिए एक अतिरिक्त बाहरी स्क्रिप्ट की आवश्यकता होगी जो सिर्फ ऐप को चलाने के लिए आवश्यक है। –

+1

बस अगर किसी ने अभी भी इस जवाब में ठोकर खाई है, तो मामला अब थोड़ा अकादमिक है कि कैसे सैंडबॉक्स वाले विकास के लिए नोड और एनपीएम विकसित हुआ है। – leebriggs

+2

@leebriggs क्या आप अपनी आखिरी टिप्पणी कृपया थोड़ा सा समझा सकते हैं? –

1

मैं एक उप निर्देशिका और लोड का उपयोग कर एक ही निर्देशिका में संबंधित मॉडल रखने या:

var x = require('./mod/x'); 

मामले में यह एक बाहरी मॉड्यूल है, मैं यह NPM कि NODE_PATH में सही ढंग से मॉड्यूल डालता है का उपयोग कर स्थापित करें।

मैंने कभी भी आवश्यकतानुसार परिवर्तन नहीं किया है।

+0

मेरे उपयोग के मामले में, मैं स्थानीय 'deps /' फ़ोल्डर में निर्भरताओं के विशिष्ट (संभावित रूप से पैच किए गए) संस्करणों की स्थानीय प्रतियां रखना चाहता हूं। शायद NODE_PATH में संशोधन करने का यह सही तरीका होगा, लेकिन इसका मतलब है कि एक लॉन्चर स्क्रिप्ट लिखना ... – nornagon

+1

क्या आपको var x = requ ('../ deps/c') जैसे सापेक्ष पथ का उपयोग करके मॉड्यूल की आवश्यकता नहीं हो सकती है; ? मैंने कभी ऐसा नहीं किया लेकिन कहीं देखा। – Carlosedp

+0

@ नोर्नगोन मुझे पता है कि यह पुराना है, लेकिन मुझे सबसे अच्छा समाधान मिला है कि 'डीओडी /' निर्देशिका में प्रत्येक मॉड्यूल को इंगित करने वाले 'node_modules' में सिम्लिंक जोड़ने के लिए सबसे अच्छा समाधान है। फिर आप उन्हें संदर्भित कर सकते हैं जैसे कि वे सामान्य मॉड्यूल थे। आपके द्वारा जोड़े गए प्रत्येक 'node_modules' symlink के लिए अपना' .gitignore' अपडेट करना सुनिश्चित करें ताकि symlinks को स्रोत नियंत्रण में चेक किया जा सके। यह हैकी है, लेकिन यह काम करता है। – vaughan

1

https://github.com/patrick-steele-idem/app-module-path-node पर एक नज़र डालें; आप उप-मॉड्यूल के पथ को प्रभावित किए बिना कथन शीर्ष स्तर में एक निर्देशिका जोड़ सकते हैं।

+0

मैं थोड़ी देर के लिए इस मॉड्यूल का उपयोग कर रहा हूं। यह वास्तव में अच्छी तरह से काम करता है। – vaughan

+0

यदि आपको केवल एक त्वरित हैक करने की आवश्यकता है, तो आप बस किसी अन्य फ़ंक्शन में मॉड्यूल._nodeModulePaths को जरूरी कर सकते हैं। याद रखें कि इस तरीके से मॉड्यूल पथ को बदलना अभी भी खराब अभ्यास है। –

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