2011-10-19 8 views
16

के लिए नोडजेएस सेट पर्यावरण चर सेट child_process.exec के माध्यम से प्रोग्राम चलाते समय मैं एक पर्यावरण चर सेट करना चाहता हूं। क्या यह संभव है?निष्पादन

मैं env इस तरह की स्थापना की कोशिश की:

exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);}); 

लेकिन जिसके परिणामस्वरूप संदेश कहा FOO मौजूद नहीं था।

उत्तर

37

आपको एक विकल्प ऑब्जेक्ट पास करना होगा जिसमें कुंजी env है जिसका मूल्य स्वयं कुंजी मान जोड़े का ऑब्जेक्ट है।

exec('echo $FOO', {env: {'FOO': 'ah'}}, function (error, stdout, stderr) 
{ 
    console.log(stdout, stderr, error); 
}); 
+28

इस का उपयोग कर लेना चाहिए किसी को भी ध्यान दें कि वातावरण चर को निर्दिष्ट इस तरह की जगह वातावरण चर की _entire_ सेट, सहित * किसी भी 'PATH' कि अन्यथा मौजूद हो सकता है *। इसलिए, यदि आप एक env चर सेट करने का प्रयास करते हैं और आपको अचानक उस कमांड के बारे में त्रुटियां मिलती हैं जिन्हें आप निष्पादित करने का प्रयास नहीं कर रहे हैं, यही कारण है कि। यह सब कुछ दस्तावेज से स्पष्ट नहीं है और मुझे थोड़ा सा मेरे सिर खरोंच छोड़ दिया। यदि आप env चर जोड़ना चाहते हैं और प्लेटफ़ॉर्म-अज्ञेयवादी रहना चाहते हैं, तो आप 'process.env' की एक प्रति बना सकते हैं, उसमें अपने परिवर्तन लागू कर सकते हैं, और इसे' child_process.exec' पर भेज सकते हैं। – DanielSmedegaardBuus

+1

आप 'process.env' direclty को भी अपडेट कर सकते हैं। पूर्व: 'process.env [" पथ "] + = path.delimiter + process.cwd() + path.sep +" node_modules "+ path.sep +" .bin "' – mems

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