2015-09-08 6 views
6

में मॉड्यूल को देखने से आवश्यकता (...) को रोकें मेरे नोड प्रोजेक्ट की मूल निर्देशिका एक निर्देशिका में है जो स्वयं एक और नोड प्रोजेक्ट की जड़ है। तो दोनों फ़ोल्डरों में package.json और node_modules शामिल हैं। समस्या यह है कि आंतरिक परियोजना में, कभी-कभी मैं इस परियोजना में require मॉड्यूल स्थापित नहीं करता हूं। लेकिन नोड चुपचाप उन्हें मूल परियोजना के node_modules में पाता है जो परेशान आश्चर्य की ओर जाता है। क्या मैं इसे ऐसा करने से रोक सकता हूं? मैं परियोजनाओं की निर्देशिका संरचना को तब तक नहीं बदलना चाहता जब तक कि यह एकमात्र समाधान न हो।पैरेंट निर्देशिका

+0

प्रेरित आवश्यकता पथ पेड़ पर पार नहीं होंगे। क्या आप अपनी फाइल संरचना पोस्ट कर सकते हैं? –

+0

https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders – thorn

+0

देखें यह आपकी फ़ोल्डर संरचना नहीं है। –

उत्तर

6

नोड वर्तमान मॉड्यूल पथ नाम को हल करने का प्रयास करता है और इसकी प्रत्येक मूल निर्देशिका में node_modules को संयोजित करता है। [Source]

आप अपने प्रोजेक्ट मॉड्यूल के शीर्ष पर इस विधि को ओवरराइड कर सकते हैं और परिणाम पथ सरणी से मूल निर्देशिका को बाहर करने के लिए कुछ तर्क जोड़ सकते हैं।

//app.js <-- parent project module, should be added at the top 

var Module = require('module').Module; 
var nodeModulePaths= Module._nodeModulePaths; //backup the original method 

Module._nodeModulePaths = function(from) { 
    var paths = nodeModulePaths.call(this, from); // call the original method 

    //add your logic here to exclude parent dirs, I did a simple match with current dir 
    paths = paths.filter(function(path){ 
     return path.match(__dirname) 
    }) 
    return paths; 
}; 

द्वारा this module

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