मैं विंडोज पर NODE_ENV = उत्पादन कैसे सेट कर सकता हूं?


340

उबंटू में यह काफी सरल है; मैं एप्लिकेशन का उपयोग करके चला सकता हूं:

$ NODE_ENV=production node myapp/app.js

हालाँकि, यह विंडोज पर काम नहीं करता है। क्या कोई कॉन्फ़िगरेशन फ़ाइल है जहां मैं विशेषता सेट कर सकता हूं?


एक मल्टीप्लेट
रिकॉर्डर

जवाबों:


485

विंडोज के वर्तमान संस्करण पॉवर्स को डिफ़ॉल्ट शेल के रूप में उपयोग करते हैं, इसलिए उपयोग करें:

$env:NODE_ENV="production"

नीचे @ jsalonen का जवाब। यदि आप CMD में हैं (जिसका अब रखरखाव नहीं है), का उपयोग करें

set NODE_ENV=production

इसे कमांड प्रॉम्प्ट में निष्पादित किया जाना चाहिए जहां आप अपना Node.js एप्लिकेशन चलाना चाहते हैं।

उपरोक्त पंक्ति कमांड प्रॉम्प्ट के लिए वातावरण चर NODE_ENV सेट करेगी जहाँ आप कमांड निष्पादित करते हैं।

विश्व स्तर पर पर्यावरण चर सेट करने के लिए ताकि वे केवल एक कमांड प्रॉम्प्ट से परे रहें, आप सिस्टम से कंट्रोल पैनल (या स्टार्ट मेनू में खोज बॉक्स में 'पर्यावरण' टाइप करके) टूल पा सकते हैं।


112
किसी के लिए अभी भी इस के साथ संघर्ष set NODE_ENV=production && node app:। अधिक आसानी से अपने कॉन्फ़िगर package.jsonतदनुसार: "scripts": { "start": "set NODE_ENV=production && node app" }
अम्बरलाम्प्स

5
@ShuruiLiu कमांड कुछ भी आउटपुट नहीं करेगा, लेकिन आप echo %NODE_ENV%इसके वर्तमान मूल्य की जांच करने के लिए टाइप कर सकते हैं ।
जानी हार्टिकेनन

169
शीर्ष पर: "NODE_ENV = उत्पादन और& सेट करें" चर में एक अनुगामी स्थान जोड़ता है। मुझे भूत जैसे नोड ऐप्स को तोड़ने वाले अतिरिक्त स्थान से बचने के लिए "सेट NODE_ENV = उत्पादन और&" की आवश्यकता थी।
daw

12
@Amberlamps जो एक अच्छा समाधान नहीं है क्योंकि NODE_ENV तो सभी मशीनों के लिए सिर्फ हार्डकोड है; असली लक्ष्य एनवी मशीन का उपयोग करके एनवी को बदलना है या कमांड लाइन पर मूल्य में पास करना है, पैकेज में इसे हार्डकोड नहीं करना है। फ़ाइल फ़ाइल।
अलेक्जेंडर मिल्स

6
मुझे लगता cross-envहै कि अगर आपकी टीम मिश्रित ऑपरेटिंग सिस्टम पर काम करती है तो इस समस्या का बेहतर समाधान है। इस प्रश्न के उत्तर के रूप में @MoOx से मेरा उत्तर होगा।
५१

230

मुझे बस एक अच्छा Node.js पैकेज मिला जो एक अद्वितीय सिंटैक्स, क्रॉस प्लेटफॉर्म का उपयोग करके पर्यावरण चर को परिभाषित करने में बहुत मदद कर सकता है।

https://www.npmjs.com/package/cross-env

यह आपको कुछ इस तरह लिखने की अनुमति देता है:

cross-env NODE_ENV=production my-command

जो बहुत सुविधाजनक है! कोई विंडोज़ या यूनिक्स विशिष्ट कोई भी आदेश नहीं देता है!


25
जबकि पहला उत्तर सत्य है। मुझे लगता है कि यह उत्तर सबसे विश्वसनीय है और इसका इस्तेमाल किया जाना चाहिए
d4rklit3

यह एक महान उपाय है!
Kirill Gusyatin

सरल और पूरी तरह से मेरी समस्या को हल करता है। मैं केवल लिनक्स पर निर्माण करने में सक्षम था। यह लिनक्स और विंडोज दोनों को हल करता है।
टिस्ता 3

यह उत्तर अधिक प्यार का हकदार है, इसे स्वीकार किया जाना चाहिए :)
माननीय कालफस

यह मेरे लिए भी सबसे अच्छा जवाब है
knaos

166

PowerShell में:

$env:NODE_ENV="production"

4
ps: $ और उद्धरण मत भूलना;)
जॉर्ज

6
set NODE_ENV=productionशक्तियों में मेरे लिए काम नहीं किया, लेकिन यह किया। धन्यवाद!
क्रोध

6
विजुअल स्टूडियो कोड में पॉवर्सशेल से काम करने के लिए इसे पाने के लिए थोड़ा संघर्ष किया। सोचा था कि मैं यहाँ समाधान छोड़ दूँगा। मैं "गुलप" कमांड चलाने का प्रयास कर रहा था, जबकि सुनिश्चित करना कि सही एनवी मान सेट किया गया था। यह मेरे लिए काम कर रहा घाव है $env:NODE_ENV="development"; gulp runMytask:। वहां पर अर्ध-कोलन पर ध्यान दें। गुल फ़ाइल प्रक्रिया पर सशर्त तर्क का उपयोग कर सकती है। nv.NODE_ENV। जब तक आप इसे सेट नहीं करते, यह अपरिभाषित रहेगा।
DVsoukup

2
केवल यह समाधान मेरे लिए विंडोज़ 10 और वेबपैक 3.8.1 के साथ काम करता है
Роман Арсеньев

1
यह सही काम करता है। लेकिन, cross-env NODE_ENV=productionविकल्प वास्तव में एक बेहतर समाधान है यदि npm कमांड को package.json से चलाया जाए जिसे सेट करने के लिए env की आवश्यकता होती है। $ Env: NODE_ENV विकल्प
Drenai

105

यह आदर्श होगा यदि आप विंडोज पर Node.js शुरू करने के लिए अपने कॉल के रूप में उसी लाइन पर पैरामीटर सेट कर सकते हैं। निम्नलिखित को ध्यान से देखें, और जैसा कहा गया है, वैसा ही चलाएं:

आपके पास ये दो विकल्प हैं:

  1. कमांड लाइन पर:

    set NODE_ENV=production&&npm start

    या

    set NODE_ENV=production&&node index.js
  2. विंडोज पर काम करने के लिए यह ट्रिक है कि आपको "&&" से पहले और बाद में व्हॉट्सएप को हटाना होगा। नीचे start_windows (नीचे देखें) के साथ अपने package.json फ़ाइल को कॉन्फ़िगर किया। फिर कमांड लाइन पर "npm run start_windows" चलाएं।

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }

1
क्या डीईएफ यह जानना चाहता है कि इसे इस तरह से काम करने के लिए कैसे प्राप्त किया जाए।
SC_Chupacabra

2
मेरे लिए काम किया। हालांकि व्हाट्सएप को हटाने के लिए "सेट NODE_ENV = उत्पादन और & nodemon server.js"
SC_Chupacabra

2
काश मैंने ऊपर का उत्तर आज़माने से पहले इसे नीचे पढ़ा होता, तो मुझे कुछ समय बच जाता। : \
जेफ

1
एक विशिष्ट रूप से संबंधित नोट पर मैंने पाया कि && एक साथ कई आदेशों का पीछा करते समय विंडोज़ पर अपेक्षित रूप से काम नहीं करता था। यदि संदेह में उपयोग करने का प्रयास करें | इसके बजाय
माइक

1
यह मेरे लिए विंडोज 10 64bit मशीन पर दोनों cmd ​​और पॉवर-शेल
Ani

30

आप उपयोग कर सकते हैं

npm run env NODE_ENV=production

यह शायद इसे करने का सबसे अच्छा तरीका है, क्योंकि यह विंडोज और यूनिक्स दोनों पर संगत है।

से NPM रन स्क्रिप्ट प्रलेखन :

Env स्क्रिप्ट एक विशेष अंतर्निहित कमांड है जिसका उपयोग पर्यावरण चर को सूचीबद्ध करने के लिए किया जा सकता है जो कि रनटाइम पर स्क्रिप्ट के लिए उपलब्ध होगा। यदि आपके पैकेज में एक "env" कमांड परिभाषित है, तो यह अंतर्निहित पर पूर्वता ले जाएगा।


3
हम चर सेट के साथ किसी अन्य कमांड को कैसे निष्पादित कर सकते हैं? यह काम नहीं करता है: npm run env NODE_ENV = production && गूंज $ NODE_ENV। संभवत: उन्हें दो अलग-अलग गोले में मार दिया जाता है?
जोनास केलो

1
मैं जो देख सकता हूं, यह बिल्कुल काम नहीं करता है। डॉक्स से ही, यह केवल पर्यावरण चर को सूचीबद्ध कर रहा है, उन्हें सेट नहीं कर रहा है।
कुमारहर्ष

2
मेरे लिए काम नहीं करता है। यह var की सूची देता है, आपके द्वारा निर्दिष्ट
संस्करण को

3
@JonasKello आप इस का प्रयोग करेंगे: है अनिवार्य । आपको जो भी कमांड चाहिए उसे बदलें । 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और ... कुछ नहीं हुआ। मुझे यकीन नहीं है कि यह विधि विंडोज़ पर काम करती है।
जूलूम

14

यदि आप 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. शुरू करने से पहले चर को कैसे सेट किया जाए।


12

मैंने एक मॉड्यूल विन-नोड-एनवी लिखा है जिसके साथ आप अपनी कमांड को वैसे ही चला सकते हैं जैसे आप * निक्स में।

NODE_ENV=production node myapp/app.js

यह एक NODE_ENV.cmdऐसा NODE_ENVवातावरण तैयार करता है जो पर्यावरण चर को सेट करता है और बाकी कमांड और उसके आर्ग्स के साथ एक बच्चे की प्रक्रिया को जन्म देता है।

बस इसे स्थापित करें (विश्व स्तर पर), और अपने npm स्क्रिप्ट कमांड को चलाएं, यह स्वचालित रूप से उन्हें काम करना चाहिए।

npm install -g win-node-env

ठीक वही जो मेरे द्वारा खोजा जा रहा था! npm स्क्रिप्ट के साथ चलने के लिए, और यह अन्य नोड क्ली टूल जैसे jest के साथ भी काम करता है। तो "सेट NODE_ENV = डिबग और सीएल & जेस्ट ..." "क्लॉस और NODE_ENV = डीबग जेस्ट" बन गया
जेड। खुल्ला

9

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- शक्तियां नहीं? ऊ, खिड़कियों पर आओ, इसे मिलाओ।
जूलूम

वी.एस. कोड को पुनः आरंभ करने के बारे में आपकी टिप्पणी वास्तव में उपयोगी थी!
यूरी कोज़लोव

8

यहाँ गैर-कमांड लाइन विधि है:

विंडोज 7 या 10 में, प्रारंभ मेनू खोज बॉक्स में पर्यावरण टाइप करें, और सिस्टम वातावरण चर संपादित करें का चयन करें।

वैकल्पिक रूप से, कंट्रोल पैनल \ सिस्टम और सिक्योरिटी \ सिस्टम पर नेविगेट करें, और उन्नत सिस्टम सेटिंग्स पर क्लिक करें

यह चयनित उन्नत टैब के साथ सिस्टम गुण संवाद बॉक्स खोलना चाहिए। सबसे नीचे, आपको एक पर्यावरण चर ... बटन दिखाई देगा। इसे क्लिक करें।

सिस्टम डायलॉग बॉक्स

पर्यावरण चर डायलॉग बॉक्स खुल जाएगा।

पर्यावरण चर डायलॉग बॉक्स

सबसे नीचे, सिस्टम चर के तहत, नया चुनें ... यह नया सिस्टम चर डायलॉग बॉक्स खोलेगा।

यहां छवि विवरण दर्ज करें

चर नाम और मान दर्ज करें, और ठीक पर क्लिक करें।

आपको नए वेरिएबल को प्रोसेस करने के लिए उपलब्ध होने के लिए सभी cmd प्रॉम्प्ट को बंद करना होगा और अपने सर्वर को रीस्टार्ट करना होगा। यदि यह अभी भी दिखाई नहीं देता है, तो अपनी मशीन को पुनरारंभ करें।


2
धन्यवाद! मैंने यह सब किया था, लेकिन जब तक मैंने सर्वर को पुनरारंभ नहीं किया तब तक यह काम नहीं कर रहा था।
Marcel Lamothe

7

बस स्पष्ट करने के लिए, और किसी और के लिए जो अपने बालों को बाहर खींच सकता है ...

यदि आप विंडोज पर गिट बैश का उपयोग कर रहे हैं , तो set node_env=production&& node whatever.js काम नहीं लगता है । इसके बजाय, मूल cmd का उपयोग करें। फिर, set node_env=production&& node whatever.jsउम्मीद के मुताबिक काम करता है।

मेरा उपयोग मामला:

मैं विंडोज पर विकसित होता हूं क्योंकि मेरे वर्कफ़्लो बहुत तेज़ हैं, लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरे एप्लिकेशन के विकास-विशिष्ट मिडलवेयर उत्पादन वातावरण में फायरिंग नहीं कर रहे थे।


6

PowerShell में अपना एप्लिकेशन चलाने के लिए (चूंकि &&अस्वीकृत है):

($env:NODE_ENV="production") -and (node myapp/app.js)

ध्यान दें कि सर्वर क्या कर रहा है का पाठ आउटपुट दबाया गया है, और मुझे यकीन नहीं है कि अगर यह ठीक है। (@ Jsalonen के उत्तर पर विस्तार करते हुए)


यह मेरे लिए काम नहीं किया:"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
एवेंड्रो पोमाटी

4

पहले पॉवरशेल टाइप में

$env:NODE_ENV="production"

फिर टाइप करें

node fileName.js

यह पूरी तरह से सभी आउटपुट प्रदर्शित करने में काम करेगा।


2

के लिए एकाधिक वातावरण चर, एक .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:

  1. के साथ स्थापित करें npm install --save dotenv-safe
  2. इसे अपने कोड में शामिल करें (शुरुआत के समय सबसे अच्छा index.js) और सीधे process.envकमांड के साथ इसका उपयोग करें :
require('dotenv').load()
console.log(process.env.DB_HOST)   

अपने VCS में फ़ाइल को अनदेखा करना.env न भूलें ।

आपका प्रोग्राम तब तेजी से विफल होता है अगर एक चर "परिभाषित" में .env.exampleएक पर्यावरण चर के रूप में या तो परेशान है .env


.env फाइलें केवल रहस्यों के लिए सुविधाजनक होती हैं और नए लोगों को किसी प्रोजेक्ट में असाइन करते समय या उनमें परिवर्तन लागू करते समय जटिलता का एक अतिरिक्त चरण जोड़ देती हैं।
कोइसो

@coiso एक सामान्य, सामान्य स्थान के बिना, आप कई env वेरिएबल्स कहाँ रखते हैं ? या तो एक स्क्रिप्ट फ़ाइल में या एक IDE निर्भर सेटिंग में, आप और भी विशिष्ट उपकरणों के लिए बाध्य हैं। मुझे लगता है कि नए टीम के सदस्यों को और अधिक कठिन बना देता है।
डोमिनिक

2

यदि आप GITBASH टर्मिनल का उपयोग कर रहे हैं तो "set NODE_ENV=production" यह काम नहीं करेगा, आप जो कर सकते हैं वह "निर्यात" हैNODE_ENV=production"


0

यह एक चर सेट नहीं करेगा, लेकिन यह कई मामलों में उपयोगी है। मैं इसे उत्पादन के लिए उपयोग करने की अनुशंसा नहीं करूंगा, लेकिन यह ठीक होना चाहिए अगर आप npm के साथ खेल रहे हैं।

npm install --production

0

मैंने "&&" के बिना gulp कार्य चलाने के लिए npm स्क्रिप्ट का उपयोग किया

NODE_ENV = testcases npm बीज-डीबी चलाते हैं


0

यदि NODE_ENV या कोई अन्य परिवेश चर सही मान प्रदान नहीं कर रहा है, तो VS कोड को पुनरारंभ करें। यह पुनरारंभ करने के बाद काम करना चाहिए।

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