"NODE_ENV" को आंतरिक या बाहरी कमांड, ऑपरेशनल कमांड या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है


207

मैं एक Node.js ऐप के लिए एक वातावरण सेटअप करने का प्रयास कर रहा हूं। लेकिन मुझे यह त्रुटि हर बार मिल रही है।

"NODE_ENV" को आंतरिक या बाह्य कमांड, ऑपरेशनल कमांड या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है।

इसका क्या मतलब है और मैं इस समस्या को कैसे हल कर सकता हूं?

मैं विंडोज का उपयोग कर रहा हूं और कोशिश भी की set NODE_ENV=developmentलेकिन कोई भाग्य नहीं था।

जवाबों:


272

ऐसा लगता है कि आपकी त्रुटि कुछ इस तरह से चलाने की कोशिश से आती है (जो लिनक्स में काम करती है)

NODE_ENV=development node foo.js

विंडोज में बराबर होगा

SET NODE_ENV=development
node foo.js

एक ही कमांड शेल में चल रहा है। आपने उल्लेख किया NODE_ENV ने काम नहीं किया, लेकिन यह स्पष्ट नहीं था कि आपने इसे कब / कैसे निष्पादित किया।


धन्यवाद जिम, मैं इसे कमांड लाइन में इस्तेमाल किया और package.json फ़ाइल से हटा दिया। लेकिन मैं उसके बाद दूसरे में भाग गया। ऐसा लगता है कि नोड मॉड्यूल विंडोज़ द्वारा पूरी तरह से समर्थित नहीं हैं। bcrypt और gyp के साथ एक और त्रुटि मिली।
क्रोजेरो

यहां एक विशेषज्ञ नहीं है, लेकिन bcrypt विंडोज़ के लिए समर्थन दिखाता है, लेकिन ओपनएसएसएल की आवश्यकता होती है, निश्चित नहीं कि अगर यह मदद करता है। यदि नहीं, तो एक नया प्रश्न पोस्ट करना चाह सकते हैं क्योंकि परिदृश्य थोड़ा बदल गया है।
जिम ओ'नील

5
हालांकि यह वास्तव में काम कर रहा है, मुझे लगता है कि @ सुसान-स्टैक ने सही उत्तर दिया - एक क्रॉस प्लेटफॉर्म समाधान और खिड़कियों पर काम करने के लिए लाइन नहीं बदल रहा है लेकिन अन्य ओएस को तोड़ना है।
जस्टअबज

सुसान के उत्तर को उकेरा - मूल प्रतिक्रिया ने क्रॉस-एनवी मॉड्यूल की भविष्यवाणी की
जिम ओ'नील

250

मैंने इसके लिए एक मॉड्यूल लिखा: जीत-नोड-एनवी

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

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

npm install -g win-node-env

13
यह काम करता हैं! और मुझे कोई आदेश नहीं बदलना पड़ा। यह उत्तर है।
अभिमन्यु पठानिया

3
यह सबसे आसान aswer है
mrTurkay

1
मैं आपके लिए स्क्रिप्ट में कस्टम चर कैसे जोड़ सकता हूं?
ivan-ivory

1
@ ivan-ivory पहले चर (यानी NODE_ENV) को एक ही रहना होगा (अन्यथा यह पूरी तरह से अलग स्क्रिप्ट होगी)। और इसके बाद कस्टम चर जोड़ने के लिए के रूप में (यानी NODE_ENV = देव SOME_VAR = वैल) मुझे स्क्रिप्ट के तर्क को प्रक्रिया से अधिक चर को पार्स करने के लिए संशोधित करना होगा। मैं इसके बारे में सोच रहा हूं लेकिन समय नहीं है। एक निवेदन करने के लिए स्वतंत्र महसूस करें।
लैगिंगसर्प्लेक्स

1
मेरे लिए काम नहीं किया। मुझे मिल रहा है:> NODE_ENV = विकास नोड_modules / .bin / nodemon --ignor/public/tones/ --exec babel-node server / index.js के 'node_modules' को आंतरिक या बाहरी कमांड, ऑपरेबल प्रोग्राम के रूप में मान्यता नहीं दी गई है। या बैच फ़ाइल।
रॉड लीमा

173

विंडोज़ के लिए &कमांड के बीच में भी उपयोग करें । पसंद,

  "scripts": {
    "start": "SET NODE_ENV=development & nodemon app/app.js",
  }

7
आदेश काम करता है लेकिन का मूल्य NODE_ENVहो जाएगा 'विकास' (के बीच 'टी' और 'और' द्वारा रखी जाएगी सफेद स्थान NODE_ENV)
roroinpho21

1
वास्तव में @ roroinpho21 क्या कहते हैं। अब मुझे काम .trim()करने के लिए बाद में मूल्य देना होगा process.env.NODE_ENV == 'production'। वैसे भी एक oneliner में इससे बचने के लिए?
फ्लायन जूल

जो लोग यह नहीं कर सकता है काम करते हैं, "test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'" गलत "test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js" सहीआपको ' ' js फ़ाइल
सेरहट टोटकेमैन

यह वही है जो आप चाहते हैं यदि आप उत्पादन के लिए उत्पादन मोड सेट करने के लिए npm शुरू करने की कोशिश कर रहे हैं।
जेसन

90
  1. npm install "cross-env" मापांक।
  2. कोड को संशोधित करें cross-env NODE_ENV=development node foo.js। तब आप इस तरह चला सकते हैं npm run build

10
कृपया cross-envनिर्भरता को शामिल करने के लिए मत भूलनाpackage.json
अमिनाह नुरैनी

1
सबसे अच्छा जवाब!
विलियन लोप्स

पुस्तकालय यहाँ है: github.com/kentcdodds/cross-env - और वह पृष्ठ देव-निर्भरता में क्रॉस-देव को शामिल करने के लिए कहता है npm install --save-dev cross-env; यह भी त्रुटि के साथ मदद करता है 'env' is not recognized as an internal or external commandजब एनपीएम स्क्रिप्ट ने कहा env VARNAME=varvalue && ...(बस एनवी को हटा दें और इसके बजाय क्रॉस-एनवी डालें)। डेवलपर्स के लिए विश्व स्तर पर कुछ स्थापित करने या विभिन्न प्लेटफार्मों के लिए अलग-अलग एनपीएम स्क्रिप्ट रखने की कोई आवश्यकता नहीं है!
माक्र्स

47

उपयोग जीत नोड-env , उपयोग करने के लिए यह सिर्फ अपने पर आदेश नीचे चलाने cmdया power shellया git bash:

npm install -g win-node-env

इसके बाद सब कुछ लिनक्स की तरह है।


2
मुझे यह तरीका बेहतर लगा क्योंकि यह खिड़कियों पर काम करने के लिए कोड में संशोधन करने से बचता है
मिकी पुरी

1
हाँ। मुझे लगता है कि यह सबसे उपयुक्त उत्तर है। मुझे यह तरीका पसंद है।
सनी सुल्तान

प्रिय @ JeffreyNicholsonCarré, आपकी प्यारी टिप्पणी के लिए धन्यवाद, आशा है कि यह आपकी मदद करेगा l
AmerllicA

26
set NODE_ENV=production & nodemon app/app.js

NODE_ENV को अंत में एक स्थान सम्‍मिलित करेगा :

process.env.NODE_ENV == 'production'; //false
process.env.NODE_ENV == 'production '; //true

जैसा कि यहां एक टिप्पणी में उल्लेख किया गया है , इसके बजाय इसका उपयोग करें:

NODE_ENV=production&& nodemon app/app.js

किस बारे में NODE_ENV="production"?
फ़ॉर्स्ट

मुझे याद नहीं है, लेकिन अनुत्तरित प्रश्न को छोड़ना नहीं है: मैं देखता हूं कि मैंने सुसान-स्टैक द्वारा दिए गए उत्तर को उलट दिया। मैं वास्तव में माफी चाहता हूँ।
TheFrost

मैंने वेबपैक कॉन्फिगर में एक ट्रिम () जोड़ा: `प्लगइन्स: [नया वेबपैक .efinePlugin ({" process.env ": {NODE_ENV: JSON.stringify (process.env.NNE_ENV.trim ())}})]],"
ली कॉमस्टॉक

एक &और दो के बीच अंतर क्या है &&? दोनों मेरे लिए काम करने लगते हैं।
theprogrammer

13

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

विंडोज़ पर बैश का उपयोग करने के लिए एनपीएम को कॉन्फ़िगर करना बहुत आसान है और आपकी स्क्रिप्ट जैसा होगा।

बस चलाते हैं npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"। सुनिश्चित करें कि आपकी मशीन के लिए बैश निष्पादन योग्य पथ सही है। परिवर्तन को प्रभावी करने के लिए आपको टर्मिनल का एक नया उदाहरण शुरू करने की आवश्यकता होगी।

नीचे दिया गया स्क्रीनशॉट लाभ दिखाता है।

  1. npm ईआरआर! शुरू में स्क्रिप्ट चलाने का प्रयास करते समय।
  2. विंडोज उपयोग के लिए संशोधित स्क्रिप्ट चलाता है, लेकिन वापसी संदेश नहीं दिखाता है।
  3. बैश का उपयोग करने के लिए एनपीएम कॉन्फिगरेशन को अपडेट करने के बाद, स्क्रिप्ट चलती है और उचित संदेश देता है।

Npm स्क्रिप्ट को चलाने के लिए जैसा कि विंडोज में है


7

उन लोगों के लिए जो Git Bash का उपयोग करते हैं और जिनके साथ समस्याएँ हैं npm run <script>,

स्क्रिप्ट चलाने के लिए Git Bash का उपयोग करने के लिए बस npm सेट करें

npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe" (अपनी स्थापना के अनुसार पथ बदलें)

और फिर npm Git Bash के साथ स्क्रिप्ट चलाएगा, इसलिए इस तरह के usages NODE_ENV=ठीक से काम करेंगे।



2

विंडोज़ के लिए गिट बैश खोलें और कोशिश करें

NODE_ENV=production node app.js


1
यह सीधे उपयोग किए जाने पर गिट बैश (मिनिटेट) में काम करता है। लेकिन जब मैं उसी कमांड को चलाता हूं npm <scripts_entry>, तो मुझे अलग-अलग वाक्यांशों के साथ एक त्रुटि मिलती है लेकिन समकक्ष अर्थ: यह env var नाम को एक निष्पादन योग्य मानता है।
एंड्री मिखायलोव - lolmaus

2
@ AndreyMikhaylov-lolmaus npm run <script>कमांड चलाने के लिए डिफ़ॉल्ट रूप में विंडोज cmd का उपयोग करता है। आप इसे Git Bash का उपयोग करने के लिए सेट कर सकते हैं। npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"और फिर npm runस्क्रिप्ट चलाने के लिए Git Bash का उपयोग करेगा।
1937 पर user3790180

1

ज्यादातर जवाब वहाँ मुझे मदद नहीं की ..

मुझे क्या मदद मिली NODE_ENV=production&& nodemon app/app.js

अंतरिक्ष पर ध्यान दें। सौभाग्य।


1

अगर कोई और भी मेरे जैसे यहाँ आया तो त्रुटि का समाधान खोजने की कोशिश कर रहा है:

'env' is not recognized as an internal or external command

इसका कारण मुझे यह है कि मैं एक मैक विकास मशीन से एक कोणीय समाधान के लिए एक विंडोज़ 10 डेस्कटॉप पर पलायन कर रहा था। इस तरह मैंने इसे हल किया।

  1. Daud npm install --save-dev cross-env

  2. मेरी package.json फ़ाइल में जाने के लिए और से सभी स्क्रिप्ट संदर्भ बदलना env <whatever>करने के लिएcross-env <whatever>

फिर मेरे आदेश जैसे: npm run start:some_random_environment_varअब विंडोज 10 पर ठीक चल रहा है।


विंडोज यूजर्स के लिए बस बैश पर जाना थोड़ा मुश्कि‍ल है, खासकर जब बाकी सिर्फ काम करता है। यह एक अच्छा समाधान है जिसने मेरे लिए काम किया।
फ़ूजज़ैबएल


0

खिड़कियों के लिए आप इसे पसंद कर सकते हैं

"scripts": {
    "start:prod" : "SET NODE_ENV=production & nodemon app.js",
    "start:dev" : "SET NODE_ENV=development & nodemon app.js"
},
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.