2013-03-06 24 views
16

के भीतर सापेक्ष फ़ाइल सिस्टम लिखने का पथ मेरे पास एक निष्पादन योग्य नोड/जावास्क्रिप्ट स्क्रिप्ट है जिसमें एक डीबग बूलियन है, यदि सत्य पर सेट किया गया है तो कुछ फाइलें लिखी जाएंगी। यह निष्पादन योग्य नोड मॉड्यूल भी है। स्क्रिप्ट चलाने वाले उपयोगकर्ता की कार्यशील निर्देशिका के आधार पर ऐसा लगता है कि फ़ंक्शन को फ़ाइलों को लिखने के लिए निर्देशिका नहीं मिल सकती है।मॉड्यूल

मॉड्यूल इस

output/ 
lib/ 
    helpers.js 
index.js 

मेरी मूल तर्क की तरह संरचित पथ होना है होगा है।

helper.write = function(data,filename){ 
    if(typeof data !== "string") data = JSON.stringify(data); 
    fs.writeFileSync("./output/"+filename, data); 
}; 

हालांकि इस काम करता है जब node_module फ़ोल्डर के भीतर से स्क्रिप्ट चलाने

fs.writeFileSync("process.cwd()+"/node_modules/the_module/output/"+filename, data); 
इस

node ./my_app/node_modules/the_module/index.js 

यह और भी भ्रमित मॉड्यूल एक और निष्पादन योग्य फ़ाइल में प्रयोग किया जाता है, तो हो जाता है जैसा कि

पुस्तकालय का उपयोग करता है।

node ./my_app/run.js 

वहाँ फ़ाइल इनके सब से स्वतंत्र बचाने के लिए एक तरीका है?

उत्तर

42

यदि मैं सही तरीके से प्रश्न समझता हूं, तो आप हमेशा मौजूदा स्क्रिप्ट के सापेक्ष एक पथ को लिखना चाहते हैं। निर्देशिका है कि वर्तमान में क्रियान्वित स्क्रिप्ट में रहता है के नाम पाने के लिए आपको इतना तरह __dirname उपयोग कर सकते हैं:

var path = require('path'); 

helper.write = function(data,filename){ 
    if(typeof data !== "string") data = JSON.stringify(data); 
    var file = path.join(__dirname, 'output', filename); 
    fs.writeFileSync(file, data); 
}; 

कहा जा रहा है, मैं इसे अच्छा अभ्यास अपने node_modules निर्देशिका के अंदर फाइल को लिखने के लिए नहीं लगता है । मैं अनुशंसा करता हूं कि आपके मॉड्यूल को फ़ाइल सिस्टम में कहीं और फ़ाइल के पूर्ण पथ की आवश्यकता हो। यदि कॉलर अपने प्रोजेक्ट ट्री में आउटपुट निर्देशिका में लिखना चाहता है, तो आप फिर से उसी __dirname चाल का उपयोग कर सकते हैं।

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