आप क्या कर रहे थे के साथ समस्या यह आप आयात करने के बाद चर सेट है कि है, लेकिन जब मॉड्यूल आयात किया गया था this.myvariable === 'test';
बुलाया जा रहा था, पहले अपने चर सेट किया गया था।
आप अपना मॉड्यूल एक फ़ंक्शन निर्यात कर सकते हैं और फिर जब आप आयात करते हैं तो फ़ंक्शन को कॉल करें, एक तर्क के रूप में अपना चर पारित करें।
module.exports = function(myVar) {
var myModule = {
// has access to myVar
...
};
return myModule;
};
जब आप आयात,
var myModule = require('myModule')(myVar);
आप इस विधि का उपयोग करते हैं, ध्यान रखें कि आप अपने मॉड्यूल का एक अलग उदाहरण भी आप आयात करते हैं, जो नहीं हो सकता है कि आप क्या चाहते हैं में रहते हैं।
यदि आप मॉड्यूल के बाहर से मॉड्यूल के मान सेट करना चाहते हैं, तो एक अच्छा विकल्प यह है कि आपका मॉड्यूल एक ऑब्जेक्ट को एक सेटर विधि के साथ निर्यात करे, और ऑब्जेक्ट की संपत्ति के रूप में चर के मान को सेट करने के लिए इसका उपयोग करें । इससे यह स्पष्ट हो जाता है कि आप यह मान सेटटेबल होना चाहते हैं, जबकि myModule.myVar =
केवल बाद में भ्रम के लिए सेट कर सकते हैं।
module.exports = {
myVar: null,
setMyVar: function(myVar) {
this.myVar = myVar;
},
...
};
इस मामले में आप मॉडल के उसी उदाहरण को एक्सेस कर रहे हैं जहां भी आप इसे आयात करते हैं।
टिप्पणी करने के लिए
जवाब में
संपादित पहला विकल्प में आपको कहां पर एक अलग उदाहरण प्रत्येक समय मिलता है, मैं कैसे कई कार्यों कि प्रत्येक शेयर एक ही myVar निर्यात कर सकते हैं? यदि वह मॉड्यूल 5 कार्यों को निर्यात करता है जिन्हें प्रत्येक को मेरी वीर की आवश्यकता होती है, तो क्या मैं इसे प्रत्येक स्थान पर में पास करने के बजाय आयात समय की तरह एक स्थान पर सेट कर सकता हूं?
नहीं पूरी तरह से यकीन है कि अगर मैं समझता हूँ कि तुम क्या वर्णन कर रहे हैं, लेकिन आप कुछ इस तरह कर सकता है:
module.exports = function(myVar) {
var modules = {};
modules.someModule = {...};
modules.anotherModule = {...};
...
return modules;
};
इन उप-मॉड्यूल से प्रत्येक एक ही myVar के लिए उपयोग किया जाएगा। तो आप ऊपर के रूप में आयात करेंगे और परिणाम एक ऑब्जेक्ट होगा जिसमें आपके प्रत्येक पांच मॉड्यूल गुणों के रूप में होंगे। मैं यह नहीं कह सकता कि यह एक अच्छा विचार है, यह बहुत मजबूत हो रहा है, लेकिन शायद यह आपकी स्थिति के लिए समझ में आता है।
उस क्रम के बारे में सोचें जिसमें यह हो रहा है, तो आपको पता चलेगा कि क्या हो रहा है। –