जवाबों:
विंडोज के वर्तमान संस्करण पॉवर्स को डिफ़ॉल्ट शेल के रूप में उपयोग करते हैं, इसलिए उपयोग करें:
$env:NODE_ENV="production"
नीचे @ jsalonen का जवाब। यदि आप CMD में हैं (जिसका अब रखरखाव नहीं है), का उपयोग करें
set NODE_ENV=production
इसे कमांड प्रॉम्प्ट में निष्पादित किया जाना चाहिए जहां आप अपना Node.js एप्लिकेशन चलाना चाहते हैं।
उपरोक्त पंक्ति कमांड प्रॉम्प्ट के लिए वातावरण चर NODE_ENV सेट करेगी जहाँ आप कमांड निष्पादित करते हैं।
विश्व स्तर पर पर्यावरण चर सेट करने के लिए ताकि वे केवल एक कमांड प्रॉम्प्ट से परे रहें, आप सिस्टम से कंट्रोल पैनल (या स्टार्ट मेनू में खोज बॉक्स में 'पर्यावरण' टाइप करके) टूल पा सकते हैं।
set NODE_ENV=production && node app
:। अधिक आसानी से अपने कॉन्फ़िगर package.json
तदनुसार: "scripts": { "start": "set NODE_ENV=production && node app" }
।
echo %NODE_ENV%
इसके वर्तमान मूल्य की जांच करने के लिए टाइप कर सकते हैं ।
cross-env
है कि अगर आपकी टीम मिश्रित ऑपरेटिंग सिस्टम पर काम करती है तो इस समस्या का बेहतर समाधान है। इस प्रश्न के उत्तर के रूप में @MoOx से मेरा उत्तर होगा।
मुझे बस एक अच्छा Node.js पैकेज मिला जो एक अद्वितीय सिंटैक्स, क्रॉस प्लेटफॉर्म का उपयोग करके पर्यावरण चर को परिभाषित करने में बहुत मदद कर सकता है।
https://www.npmjs.com/package/cross-env
यह आपको कुछ इस तरह लिखने की अनुमति देता है:
cross-env NODE_ENV=production my-command
जो बहुत सुविधाजनक है! कोई विंडोज़ या यूनिक्स विशिष्ट कोई भी आदेश नहीं देता है!
PowerShell में:
$env:NODE_ENV="production"
set NODE_ENV=production
शक्तियों में मेरे लिए काम नहीं किया, लेकिन यह किया। धन्यवाद!
$env:NODE_ENV="development"; gulp runMytask
:। वहां पर अर्ध-कोलन पर ध्यान दें। गुल फ़ाइल प्रक्रिया पर सशर्त तर्क का उपयोग कर सकती है। nv.NODE_ENV। जब तक आप इसे सेट नहीं करते, यह अपरिभाषित रहेगा।
cross-env NODE_ENV=production
विकल्प वास्तव में एक बेहतर समाधान है यदि npm कमांड को package.json से चलाया जाए जिसे सेट करने के लिए env की आवश्यकता होती है। $ Env: NODE_ENV विकल्प
यह आदर्श होगा यदि आप विंडोज पर Node.js शुरू करने के लिए अपने कॉल के रूप में उसी लाइन पर पैरामीटर सेट कर सकते हैं। निम्नलिखित को ध्यान से देखें, और जैसा कहा गया है, वैसा ही चलाएं:
आपके पास ये दो विकल्प हैं:
कमांड लाइन पर:
set NODE_ENV=production&&npm start
या
set NODE_ENV=production&&node index.js
विंडोज पर काम करने के लिए यह ट्रिक है कि आपको "&&" से पहले और बाद में व्हॉट्सएप को हटाना होगा। नीचे start_windows (नीचे देखें) के साथ अपने package.json फ़ाइल को कॉन्फ़िगर किया। फिर कमांड लाइन पर "npm run start_windows" चलाएं।
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
आप उपयोग कर सकते हैं
npm run env NODE_ENV=production
यह शायद इसे करने का सबसे अच्छा तरीका है, क्योंकि यह विंडोज और यूनिक्स दोनों पर संगत है।
Env स्क्रिप्ट एक विशेष अंतर्निहित कमांड है जिसका उपयोग पर्यावरण चर को सूचीबद्ध करने के लिए किया जा सकता है जो कि रनटाइम पर स्क्रिप्ट के लिए उपलब्ध होगा। यदि आपके पैकेज में एक "env" कमांड परिभाषित है, तो यह अंतर्निहित पर पूर्वता ले जाएगा।
npm run env NODE_ENV=production -- node -e 'console.log(process.env.NODE_ENV)'
--
node -e 'console.log(process.env.NODE_ENV)'
npm run env NODE_TLS_REJECT_UNAUTHORIZED=0 -- node --inspect ./etc/http-req-standalone.js
और ... कुछ नहीं हुआ। मुझे यकीन नहीं है कि यह विधि विंडोज़ पर काम करती है।
यदि आप NTVS के साथ Visual Studio का उपयोग कर रहे हैं, तो आप प्रोजेक्ट गुण पृष्ठ पर पर्यावरण चर सेट कर सकते हैं:
जैसा कि आप देख सकते हैं, कॉन्फ़िगरेशन और प्लेटफ़ॉर्म ड्रॉपडाउन अक्षम हैं (मैंने बहुत दूर नहीं देखा कि यह क्यों है), लेकिन यदि आप अपनी .njsproj
फ़ाइल को निम्नानुसार संपादित करते हैं:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=development</Environment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=production</Environment>
</PropertyGroup>
'डीबग / रिलीज़' ड्रॉपडाउन तब नियंत्रित करेगा कि Node.js. शुरू करने से पहले चर को कैसे सेट किया जाए।
मैंने एक मॉड्यूल विन-नोड-एनवी लिखा है जिसके साथ आप अपनी कमांड को वैसे ही चला सकते हैं जैसे आप * निक्स में।
NODE_ENV=production node myapp/app.js
यह एक NODE_ENV.cmd
ऐसा NODE_ENV
वातावरण तैयार करता है जो पर्यावरण चर को सेट करता है और बाकी कमांड और उसके आर्ग्स के साथ एक बच्चे की प्रक्रिया को जन्म देता है।
बस इसे स्थापित करें (विश्व स्तर पर), और अपने npm स्क्रिप्ट कमांड को चलाएं, यह स्वचालित रूप से उन्हें काम करना चाहिए।
npm install -g win-node-env
Visual Studio 2013 में विंडोज 7 64-बिट पर Node.js का उपयोग करने का मेरा अनुभव यह है कि आपको उपयोग करने की आवश्यकता है
setx NODE_ENV development
एक cmd विंडो से। और नए मान को पहचाने जाने के लिए आपको Visual Studio को पुनरारंभ करना होगा।
सेट सिंटैक्स केवल cmd विंडो की अवधि के लिए रहता है जिसमें यह सेट होता है।
Node.js में सरल परीक्षण:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
सेट का उपयोग करते समय यह 'अपरिभाषित' देता है, और अगर सेटक्स का उपयोग करते हुए और विजुअल स्टूडियो को पुनरारंभ करते हुए यह 'विकास' लौटाएगा।
cmd
- शक्तियां नहीं? ऊ, खिड़कियों पर आओ, इसे मिलाओ।
यहाँ गैर-कमांड लाइन विधि है:
विंडोज 7 या 10 में, प्रारंभ मेनू खोज बॉक्स में पर्यावरण टाइप करें, और सिस्टम वातावरण चर संपादित करें का चयन करें।
वैकल्पिक रूप से, कंट्रोल पैनल \ सिस्टम और सिक्योरिटी \ सिस्टम पर नेविगेट करें, और उन्नत सिस्टम सेटिंग्स पर क्लिक करें
यह चयनित उन्नत टैब के साथ सिस्टम गुण संवाद बॉक्स खोलना चाहिए। सबसे नीचे, आपको एक पर्यावरण चर ... बटन दिखाई देगा। इसे क्लिक करें।
पर्यावरण चर डायलॉग बॉक्स खुल जाएगा।
सबसे नीचे, सिस्टम चर के तहत, नया चुनें ... यह नया सिस्टम चर डायलॉग बॉक्स खोलेगा।
चर नाम और मान दर्ज करें, और ठीक पर क्लिक करें।
आपको नए वेरिएबल को प्रोसेस करने के लिए उपलब्ध होने के लिए सभी cmd प्रॉम्प्ट को बंद करना होगा और अपने सर्वर को रीस्टार्ट करना होगा। यदि यह अभी भी दिखाई नहीं देता है, तो अपनी मशीन को पुनरारंभ करें।
बस स्पष्ट करने के लिए, और किसी और के लिए जो अपने बालों को बाहर खींच सकता है ...
यदि आप विंडोज पर गिट बैश का उपयोग कर रहे हैं , तो set node_env=production&& node whatever.js
काम नहीं लगता है । इसके बजाय, मूल cmd का उपयोग करें। फिर, set node_env=production&& node whatever.js
उम्मीद के मुताबिक काम करता है।
मेरा उपयोग मामला:
मैं विंडोज पर विकसित होता हूं क्योंकि मेरे वर्कफ़्लो बहुत तेज़ हैं, लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरे एप्लिकेशन के विकास-विशिष्ट मिडलवेयर उत्पादन वातावरण में फायरिंग नहीं कर रहे थे।
PowerShell में अपना एप्लिकेशन चलाने के लिए (चूंकि &&
अस्वीकृत है):
($env:NODE_ENV="production") -and (node myapp/app.js)
ध्यान दें कि सर्वर क्या कर रहा है का पाठ आउटपुट दबाया गया है, और मुझे यकीन नहीं है कि अगर यह ठीक है। (@ Jsalonen के उत्तर पर विस्तार करते हुए)
"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
के लिए एकाधिक वातावरण चर, एक .env
फ़ाइल और अधिक सुविधाजनक है:
# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD
इसके साथ प्रयोग करना आसान है dotenv-safe
:
npm install --save dotenv-safe
।index.js
) और सीधे process.env
कमांड के साथ इसका उपयोग करें :require('dotenv').load()
console.log(process.env.DB_HOST)
अपने VCS में फ़ाइल को अनदेखा करना.env
न भूलें ।
आपका प्रोग्राम तब तेजी से विफल होता है अगर एक चर "परिभाषित" में .env.example
एक पर्यावरण चर के रूप में या तो परेशान है .env
।
यदि आप GITBASH टर्मिनल का उपयोग कर रहे हैं तो
"set NODE_ENV=production"
यह काम नहीं करेगा, आप जो कर सकते हैं वह "निर्यात" हैNODE_ENV=production"
यह एक चर सेट नहीं करेगा, लेकिन यह कई मामलों में उपयोगी है। मैं इसे उत्पादन के लिए उपयोग करने की अनुशंसा नहीं करूंगा, लेकिन यह ठीक होना चाहिए अगर आप npm के साथ खेल रहे हैं।
npm install --production
मैंने "&&" के बिना gulp कार्य चलाने के लिए npm स्क्रिप्ट का उपयोग किया
NODE_ENV = testcases npm बीज-डीबी चलाते हैं
यदि NODE_ENV या कोई अन्य परिवेश चर सही मान प्रदान नहीं कर रहा है, तो VS कोड को पुनरारंभ करें। यह पुनरारंभ करने के बाद काम करना चाहिए।