Node.js में पर्यावरण चर पढ़ें


1287

क्या Node.js कोड में पर्यावरण चर को पढ़ने का एक तरीका है?

उदाहरण के लिए पायथन का os.environ['HOME']

जवाबों:


1879
process.env.ENV_VARIABLE

ENV_VARIABLEउस चर का नाम जहां आप एक्सेस करना चाहते हैं।

के लिए Node.js डॉक्सprocess.env देखें ।


4
ध्यान दें कि यह नोड प्रक्रिया और इसके उपप्रकारों के बाहर दिखाई नहीं देगा। यदि envनोड प्रक्रिया चल रही है, तो न तो यह दिखाई नहीं देगा , न ही नोड प्रक्रिया के चलने के बाद, और न ही उसी शेल में।
मार्को बोनासी

17
यह वेरिएबल असाइन करने के लिए भी काम करता है। process.env.FOO = "foo";काम करता है।
लड़कियों को

16
यह उल्लेखनीय है कि यह रिएक्ट एप्लिकेशन में काम नहीं करता है। process.envसुरक्षा कारणों से स्वच्छता है। केवल चर जो शुरू होते REACT_ENV_हैं, उपलब्ध हैं। देखें: github.com/facebookincubator/create-react-app/blob/master/…
मार्क एडिंग्टन

7
@ मार्केडिंगटन मुझे लगता है कि यह होना चाहिएREACT_APP_
श्री 14

5
@ Mr.14 आप सही हैं! यह REACT_APP_ नहीं REACT_ENV_
मार्क Edington

133

Node.js का उपयोग करते समय , आप process.envऑब्जेक्ट से कुंजी द्वारा पर्यावरण चर प्राप्त कर सकते हैं :

उदाहरण के लिए

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

यहाँ वह उत्तर है जो नोड.जेएस में पर्यावरण चर को स्थापित करने की व्याख्या करेगा


उपर्युक्त प्रक्रिया का उपयोग करने के लिए क्या आवश्यक है। विधि विधि?
user_mda

3
@user_mda नोड process.envमें बनाया गया है।
जेसन एक्सलसन

क्या मैं इस प्रक्रिया पर जो कुछ भी चाहता हूं, वह सेट करता हूं। लोग इसे कहने के लिए विरोध के रूप में क्यों सेट करते हैं, एक config ऑब्जेक्ट जिसे नोड (js) द्वारा एड () की आवश्यकता होती है?
PDN

3
process.env आपको एक ऑपरेटिंग सिस्टम स्तर पर पर्यावरण चर के लिए पहुँच प्रदान करता है। ये विभिन्न तरीकों से सेट किए जा सकते हैं और इस बात पर निर्भर करेंगे कि आप अपना ऐप कहां तैनात कर रहे हैं। उदाहरण के लिए, मैं अक्सर NODE_ENV = विकास NODE_PATH = lib नोड server.js का उपयोग करके अपना स्थानीय ऐप चलाता हूं। फिर process.env.NODE_PATH '
लिबर

57

यदि आप अपने Node.js कार्यक्रम में उत्पन्न स्ट्रिंग कुंजी का उपयोग करना चाहते हैं, तो कहें var v = 'HOME', आप उपयोग कर सकते हैं process.env[v]

अन्यथा, process.env.VARNAMEअपने कार्यक्रम में हार्डकोड किया जाना चाहिए।


आपके पास क्यों है process.env['HOME']?
एल्गो रीथ्म

35

Node.JS में पर्यावरण चर को पुनः प्राप्त करने के लिए आप process.env.VARIABLE_NAME का उपयोग कर सकते हैं , लेकिन यह न भूलें कि प्रक्रिया पर एक प्रॉपर्टी निर्दिष्ट करना ।vv से मान को एक स्ट्रिंग में बदल देगा।

बूलियन लॉजिक से बचें

यहां तक ​​कि अगर आपकी .env फ़ाइल SHOULD_SEND = false या SHOULD_SEND = 0 जैसे चर को परिभाषित करती है , तो मूल्यों को क्रमशः स्ट्रिंग्स ( "झूठे" और "0" ) में बदल दिया जाएगा और व्याख्या नहीं की जाएगी।

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

इसके बजाय, आपको स्पष्ट जांच करनी चाहिए। मैंने पाया है कि पर्यावरण के नाम के आधार पर एक लंबा रास्ता तय किया जाता है।

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

1
मैं बूलियन एनवी वर्जन के लिए 'हां' और 'नो' का उपयोग करना पसंद करता हूं जिसे स्पष्ट रूप से जांचना चाहिए। यह कई प्रोग्रामिंग भाषाओं में समस्याओं से बचा जाता है।
डॉगवेदर

22

आप प्रति प्रोजेक्ट अपने पर्यावरण चर का प्रबंधन करने के लिए env पैकेज का उपयोग कर सकते हैं :

  • .envप्रोजेक्ट डायरेक्टरी के तहत एक फाइल बनाएं और अपने सभी वेरिएबल्स वहां रखें।
  • इस लाइन को अपनी एप्लिकेशन प्रविष्टि फ़ाइल के शीर्ष पर जोड़ें:
    require('dotenv').config();

किया हुआ। अब आप अपने पर्यावरण चर का उपयोग कर सकते हैं process.env.ENV_NAME


9
Dotenv पैकेज उपयोगी है, लेकिन पूछे गए प्रश्न को पढ़ने की प्रक्रिया द्वारा उत्तर दिया गया है ।ENv.ENV_VARIABLE। Dovenv पैकेज पर्यावरण में फ़ाइल से सेटिंग लोड करने के बारे में है।
रॉबर्ट पैटरसन

यह मेरी बात है: envपुस्तकालय से एनवी चर का प्रबंधन और लोड करें ।
वो

1
आप envdirउपयोगिता का उपयोग करके गैर-नोड-जेएस-विशिष्ट तरीके से भी कर सकते हैं ।
क्रिस जॉनसन

Github.com/bitrise-io/envman के समान है जो भी -स्पेशल नहीं है node
मार्कहु

1
आपने मेरा दिन बना दिया! आपका बहुत बहुत धन्यवाद!
वहाॅ नोव

0

.bash_profileफ़ाइल में उपयोगकर्ता निर्देशिका में उनका उपयोग क्यों नहीं किया जाता है, इसलिए आपको उत्पादन के लिए अपने चर के साथ किसी भी फाइल को धक्का नहीं देना पड़ता है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.