2012-06-19 14 views
89

मैं नोडजेस पर एक ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं। मुझे नहीं लगता कि मुझे कुछ भी याद आया लेकिन जब भी मैं process.env.NODE_ENV पर कॉल करता हूं तो मुझे वापस प्राप्त करने वाला एकमात्र मूल्य अनिर्धारित होता है। मेरे शोध के अनुसार डिफ़ॉल्ट मान 'विकास' होना चाहिए। यह मान गतिशील रूप से कैसे सेट किया जाता है और इसे प्रारंभ में कहां सेट किया जाता है?process.env.NODE_ENV अपरिभाषित

+0

Heroku क्षुधा के लिए NODE_ENV सेट करने के लिए उपयोग कर सकते हैं: 'Heroku config: सेट NODE_ENV =" उत्पादन "' –

+3

हालांकि जवाब नीचे समस्या वातावरण चर, बड़ा सबक यहाँ की स्थापना द्वारा अस्थायी रूप से समाधान होगा यह होना चाहिए कि आप कभी भी यह नहीं जान सकते कि क्या कोई पर्यावरण चर सेट किया जाएगा ... तो तदनुसार अपना कोड लिखें और जांच करें कि यह सेट है और यदि ऐसा है, तो क्या। इसके बारे में धारणा मत बनो। –

उत्तर

124

process.env आपके पर्यावरण का संदर्भ है, इसलिए आपको वहां चर सेट करना होगा।

सेट करने के लिए एक environment variable in Windows:

export NODE_ENV=development 
+0

यह काम करता है, केवल मेरे ओएस एक्स पर 'निर्यात' शब्द लोअरकेस होने की आवश्यकता है। धन्यवाद। – basheps

+3

आप यह जोड़ सकते हैं कि यदि NODE_ENV सेट नहीं है तो ऐप "विकास" मोड – Rocco

+1

में लिनक्स के लिए व्यवहार करता है, vi ~/.bash_profile, फिर NODE_ENV = विकास और सहेजें। – stonyau

2

तुम भी कोड से सेट कर सकते हैं, उदाहरण के लिए:

process.env.NODE_ENV = 'test';

+33

मैं किसी भी व्यक्ति को एप्लिकेशन तर्क में पर्यावरण पहचानकर्ता को कभी भी बदलने से हतोत्साहित करता हूं। आप कभी भी एप्लिकेशन को अचानक यह नहीं सोचना चाहते कि यह वास्तव में कुछ और है। यह केवल सिस्टम-स्तर पर बदला जाना चाहिए, क्योंकि कई अन्य उत्तरों का सुझाव है। – Kafoso

+2

आप लगभग 12 कारक ऐप्स पढ़ना चाहेंगे: https://12factor.net/config। यह कोड इसका उल्लंघन होगा। अपने कॉन्फ़िगरेशन को अपने कोड से अलग रखने के अच्छे कारण हैं। – jcollum

+0

12 फैक्टर ऐप्स दिलचस्प है! कीप आईटी उप! – joaquindev

5

में

SET NODE_ENV=development 
ओएस एक्स या Linux पर

UBUNTU उपयोग:

$ निर्यात NODE_ENV = परीक्षण

+0

एक आकर्षण की तरह काम किया, धन्यवाद! –

37

का उपयोग कर * nix (लिनक्स, ओएस एक्स, आदि), एक दूसरा निर्यात आदेश के माध्यम से यह करने के लिए कोई कारण नहीं है लोगों के लिए, आप इसे प्रेरक आदेश के भाग के रूप श्रृंखला कर सकते हैं:

NODE_ENV=development node server.js 

आसान, नहीं? :)

+0

जानना बहुत अच्छा है। – basheps

+1

क्रॉस-एनवी जैसे पैकेज से विंडोज़ पर भी काम करने की अनुमति मिल जाएगी। – walkerrandophsmith

18

विंडोज़ पर नोड के साथ काम करते समय हम इस समस्या में भाग गए।

इन चरों को सेट करने के लिए ऐप चलाने का प्रयास करने वाले किसी भी व्यक्ति की आवश्यकता के बजाय, हमने एप्लिकेशन के भीतर फॉलबैक प्रदान किया।

var environment = process.env.NODE_ENV || 'development'; 

उत्पादन वातावरण में, हम इसे सामान्य तरीकों (एसईटी/निर्यात) के अनुसार परिभाषित करेंगे।

28

सुझावों

package.json में

:

app.js में
"scripts": { 
    "start": "set NODE_ENV=dev && node app.js" 
} 

:

console.log(process.env.NODE_ENV) // dev 
console.log(process.env.NODE_ENV === 'dev') // false 
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end) 

हां, तो यह बेहतर कर सकते हैं:

"start": "set NODE_ENV=dev&& node app.js" 

या

console.log(process.env.NODE_ENV.trim() === 'dev') // true 
संबंधित मुद्दे