Node.js: पर्यावरण चर सेट करना




environment-variables (9)

मैं एक ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं और यह कहता है:

"प्रमाण पत्र लोड करने के कुछ तरीके हैं।

  1. पर्यावरण चर से लोड किया गया,
  2. डिस्क पर एक JSON फ़ाइल से लोड किया गया,

चाबियाँ निम्नानुसार होने की आवश्यकता है:

USER_ID, USER_KEY

... इसका मतलब है कि यदि आप अपने पर्यावरण चर को सही ढंग से सेट करते हैं, तो आपको अपने आवेदन में प्रमाण-पत्र प्रबंधित करने की आवश्यकता नहीं है। "

कुछ Googling के आधार पर, ऐसा प्रतीत होता है कि मुझे process.env में चर सेट करने की आवश्यकता है? मैं इन प्रमाण-पत्र कैसे और कहां सेट करूं? उदाहरण कृपया


@ctrlplusb उत्तर के विस्तार के रूप में,
मैं सुझाव देता हूं कि आप env-dot-prop पैकेज को भी देखें।

यह आपको dot-path . dot-path का उपयोग करके process.env से गुण सेट / प्राप्त करने की अनुमति देता dot-path

आइए मान लें कि आपकी process.env में निम्न शामिल हैं:

process.env = {
  FOO_BAR: 'baz'
  'FOO_🦄': '42'
}

फिर आप इस तरह के पर्यावरण चर का उपयोग कर सकते हैं:

const envDotProp = require('env-dot-prop');

console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_🦄': '42'}

envDotProp.get('foo');
//=> {bar: 'baz', '🦄': '42'}

envDotProp.get('foo.🦄');
//=> '42'

envDotProp.get('foo.🦄', {parse: true});
//=> 42

envDotProp.set('baz.foo', 'bar');
envDotProp.get('', {parse: true});
//=> {foo: {bar: 'baz', '🦄': 42}, baz: {foo: 'bar'}}

console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_🦄': '42', BAZ_FOO: 'bar'}

envDotProp.delete('foo');
envDotProp.get('');
//=> {baz: {foo: 'bar'}}

console.log(process.env);
//=> {BAZ_FOO: 'bar'}

यह आपको पर्यावरण चर को पार्स करने और उन्हें आपके ऐप में कॉन्फ़िगर ऑब्जेक्ट के रूप में उपयोग करने में सहायता करता है।
यह आपको 12-कारक कॉन्फ़िगरेशन को लागू करने में भी मदद करता है


आप प्रक्रिया वैरिएबल वैरिएबल के माध्यम से पर्यावरण चर सेट कर सकते हैं:

process.env['NODE_ENV'] = 'production';

सभी प्लेटफार्मों में काम करता है।


पर्यावरण चर (इस मामले में) का उपयोग आपके आवेदन में प्रमाण पत्र पारित करने के लिए किया जा रहा है। USER_ID और USER_KEY को क्रमशः process.env.USER_ID और process.env.USER_KEY से एक्सेस किया जा सकता है। आपको उन्हें संपादित करने की आवश्यकता नहीं है, बस उनकी सामग्री तक पहुंचें।

ऐसा लगता है कि वे आपको बस USER_KEY और USER_KEY को process.env या डिस्क पर कुछ विशिष्ट फ़ाइल से लोड करने के बीच विकल्प दे रहे हैं।

अब, जब आप एप्लिकेशन चलाते हैं तो जादू होता है।

USER_ID=239482 USER_KEY=foobar node app.js

यह उपयोगकर्ता आईडी 239482 और उपयोगकर्ता कुंजी को foobar रूप में पास करेगा। यह परीक्षण के लिए उपयुक्त है, हालांकि उत्पादन के लिए, आप शायद चर को निर्यात करने के लिए कुछ बैश स्क्रिप्ट को कॉन्फ़िगर कर रहे हैं।


पर्यावरण चर का उपयोग करने का एक बहुत अच्छा तरीका मैंने सफलतापूर्वक उपयोग किया है:

अलग कॉन्फ़िगरेशन फ़ाइलें हैं :

  1. dev.js // इसमें केवल विकास के लिए सभी पर्यावरण चर हैं
    फ़ाइल में शामिल हैं:

    module.exports = {
     ENV: 'dev',
     someEnvKey1 : 'some DEV Value1',
     someEnvKey2 : 'some DEV Value2'
    };
    
  2. stage.js // इसमें केवल विकास के लिए सभी पर्यावरण चर हैं

    ..
    
  3. qa.js // इसमें केवल क्यूए परीक्षण के लिए सभी पर्यावरण चर हैं
    फ़ाइल में शामिल हैं:

    module.exports = {
     ENV: 'dev',
     someEnvKey1 : 'some QA Value1',
     someEnvKey2 : 'some QA Value2'
    };
    

नोट : मूल्य पर्यावरण के साथ बदल रहे हैं, ज्यादातर, लेकिन चाबियाँ एक ही रहती हैं।

  1. आप और अधिक कर सकते हैं

  2. z__prod.js // इसमें केवल उत्पादन / लाइव के लिए सभी पर्यावरण चर हैं
    नोट: यह फ़ाइल तैनाती के लिए कभी बंडल नहीं की जाती है

  3. इन सभी कॉन्फ़िगरेशन फ़ाइलों को / config / फ़ोल्डर में रखें

    <projectRoot>/config/dev.js
    <projectRoot>/config/qa.js
    <projectRoot>/config/z__prod.js
    <projectRoot>/setenv.js
    <projectRoot>/setenv.bat
    <projectRoot>/setenv.sh
    

नोट : प्रोड का नाम दूसरों की तुलना में अलग है, क्योंकि इसका उपयोग सभी द्वारा नहीं किया जाएगा।

बी कॉन्फ़िगरेशन फ़ाइल से ओएस / लैम्ब्डा / एज़ूर फ़ंक्शन / GoogleCloudFunction पर्यावरण चर सेट करें

अब आदर्श रूप से, फ़ाइल में इन कॉन्फ़िगरेशन चर, ओएस पर्यावरण चर के रूप में जाना चाहिए (या, LAMBDA फ़ंक्शन वेरिएबल, या, Azure फ़ंक्शन वेरिएबल्स, Google क्लाउड फ़ंक्शंस इत्यादि)

इसलिए, हम विंडोज ओएस (या अन्य) में स्वचालन लिखते हैं

  1. मान लें कि हम ' setenv ' bat फ़ाइल लिखते हैं, जो एक तर्क लेता है जो पर्यावरण है जिसे हम सेट करना चाहते हैं

  2. अब " सेटेंव देव " चलाएं

ए) यह उत्तीर्ण तर्क चर से इनपुट लेता है (अब के लिए 'देव')
बी) संबंधित फ़ाइल ('config \ dev.js') पढ़ें
सी) विंडोज ओएस (या अन्य) में पर्यावरण चर सेट करता है

उदाहरण के लिए,

Setenv.bat सामग्री हो सकती है:

    node setenv.js

Setenv.js सामग्री हो सकती है:

    // import "process.env.ENV".js file (dev.js example)
    // loop the imported file contents
    //     set the environment variables in Windows OS (or, Lambda, etc.)

यह सब कुछ है , आपका पर्यावरण उपयोग के लिए तैयार है।

जब आप ' setenv qa ' करते हैं, तो सभी qa पर्यावरण चर qa.js से उपयोग के लिए तैयार होंगे, और उसी प्रोग्राम द्वारा उपयोग के लिए तैयार होंगे (जो हमेशा process.env.someEnvKey1 के लिए पूछता है, लेकिन यह मान qa एक होता है)।

उम्मीद है की वो मदद करदे।


मैं अत्यधिक dotenv पैकेज में देखने की सलाह देते हैं।

https://github.com/motdotla/dotenv

यह @Benxamin के उत्तर में सुझाए गए पुस्तकालय के समान है, लेकिन यह बहुत साफ है और किसी भी बैश स्क्रिप्ट की आवश्यकता नहीं है। यह भी ध्यान देने योग्य है कि कोड बेस लोकप्रिय और अच्छी तरह से बनाए रखा गया है।

असल में आपको एक .env फ़ाइल की आवश्यकता होती है (जिसे मैं अत्यधिक अनुशंसा करता हूं कि आपके गिट / मर्क्यूरियल / आदि से अनदेखा किया जाए):

FOO=bar
BAZ=bob

फिर आपके आवेदन प्रविष्टि फ़ाइल में निम्न पंक्ति को जितनी जल्दी हो सके डाल दें:

require('dotenv').config();

बूम। किया हुआ। 'process.env' में अब उपरोक्त चर शामिल होंगे:

console.log(process.env.FOO);
// bar

'.env' फ़ाइल की आवश्यकता नहीं है, इसलिए आपको इसकी अनुपस्थिति में अपने ऐप के बारे में चिंता करने की आवश्यकता नहीं है।


मैं एक प्रणाली env var सेट करने के बाद अपरिभाषित हो रहा था। जब मैं उपयोगकर्ता env var में APP_VERSION डालता हूं, तो मैं process.env.APP_VERSION के माध्यम से नोड से मान प्रदर्शित कर सकता हूं


यह आपके ऑपरेटिंग सिस्टम और आपके खोल पर निर्भर करता है

शेल बैश के साथ लिनक्स पर, आप इस तरह के पर्यावरण चर बनाते हैं (कंसोल में):

export FOO=bar

उबंटू पर पर्यावरण चर पर अधिक जानकारी के लिए (उदाहरण के लिए):

उबंटू पर पर्यावरण चर



चरण 1: अपने पर्यावरण चर को अपनी उचित फ़ाइल में जोड़ें। उदाहरण के लिए, आपके स्टेजिंग वातावरण को .env.staging कहा जा सकता है, जिसमें पर्यावरण चर के USER_ID और USER_KEY शामिल हैं, जो आपके स्टेजिंग वातावरण के लिए विशिष्ट हैं।

चरण 2: अपनी package.json फ़ाइल में, निम्न जोड़ें:

"scripts": {
  "build": "sh -ac '. ./.env.${REACT_APP_ENV}; react-scripts build'",
  "build:staging": "REACT_APP_ENV=staging npm run build",
  "build:production": "REACT_APP_ENV=production npm run build",
  ...
}

फिर इसे अपनी तैनाती स्क्रिप्ट में इस तरह कॉल करें:

npm run build:staging

सुपर सरल सेट अप और एक आकर्षण की तरह काम करता है!

स्रोत: https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d







environment-variables