एक्सप्रेस में उपयोग के लिए। पर्यावरण वातावरण। कोई सुझाव?
एक्सप्रेस में उपयोग के लिए। पर्यावरण वातावरण। कोई सुझाव?
जवाबों:
अपना ऐप चलाने से पहले, आप इसे कंसोल में कर सकते हैं,
export NODE_ENV=production
या यदि आप खिड़कियों में हैं तो आप यह कोशिश कर सकते हैं:
SET NODE_ENV=production
या आप अपना ऐप इस तरह चला सकते हैं:
NODE_ENV=production node app.js
आप इसे अपनी js फाइल में भी सेट कर सकते हैं:
process.env.NODE_ENV = 'production';
लेकिन मैं इसे आपके रनटाइम फ़ाइल में करने का सुझाव नहीं देता, क्योंकि आपके सर्वर में VIM खोलना और इसे उत्पादन में बदलना आसान नहीं है। आप अपनी निर्देशिका में एक config.json फ़ाइल बना सकते हैं और जब भी आपका ऐप चलता है, यह उससे पढ़ता है और कॉन्फ़िगरेशन सेट करता है।
process.env.NODE_ENV
ही एप्लिकेशन से मज़बूती से सेटिंग होने वाला है। डैनियल नीचे दिए गए लिंक के अनुसार अपने पर्यावरण चर को ठीक से सेट करें।
NODE_ENV
हर बार जब आप ऐप चलाते हैं, तो दूसरी मिसाल ( NODE_ENV=production node app.js
) के रूप में स्पष्ट रूप से सेट करने का प्रशंसक हूं । इस तरह से आप संभावित रूप से अपने आप को भविष्य में होने वाले कुछ बालों को खींचने से बचाते हैं, जिसे आप अपने स्थानीय NODE_ENV
वापस सेट करना भूल जाते हैं development
।
cross-env NODE_ENV=production
विंडोज़ और लिनक्स / मैक पर काम करता है।
NODE_ENV=production forever app.js
को काम करना चाहिए।
in package.json:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
फिर टर्मिनल में चलाएं:
npm start
NODE_ENV=production
में डालने से ज्यादा समझ में नहीं आता है। रनिंग npm start
विकास में उत्पादन में यह चलेंगे। आप अपना कोड इस प्रकार लिख सकते हैं जैसे कि यह हमेशा उत्पादन होता है, जब से आप इसे हमेशा चलाते हैं। ऐसा करने का एक कारण यह है कि मैं अन्य मॉड्यूल (जैसे एक्सप्रेस) को उत्पादन मोड में चलाने के लिए मजबूर करूंगा। अगर वे कभी नहीं बदलते हैं तो पर्यावरण चर का उपयोग क्यों करें?
.env
यहाँ अभी तक किसी का उल्लेख नहीं है? .env
अपनी ऐप रूट में एक फ़ाइल बनाएंrequire('dotenv').config()
मूल्यों को पढ़ें। आसानी से बदला, आसानी से पढ़ा, क्रॉस प्लेटफॉर्म।
"mode": "production"
लिए .env
फ़ाइल में सेटिंग ने काम किया।
export NODE_ENV=production
बुरा समाधान है, यह पुनरारंभ होने के बाद गायब हो जाता है।
यदि आप उस चर के बारे में चिंता नहीं करना चाहते हैं - इसे इस फ़ाइल में जोड़ें:
/etc/environment
निर्यात सिंटैक्स का उपयोग न करें, बस लिखें (यदि कुछ सामग्री पहले से है तो नई पंक्ति में):
NODE_ENV=production
यह पुनः आरंभ करने के बाद काम करता है। आपको फिर से प्रवेश नहीं करना पड़ेगाअब आपको कहीं भी निर्यात NODE_ENV = उत्पादन कमांड पड़ेगा और केवल उस नोड का उपयोग करें जिसे आप चाहते हैं - हमेशा के लिए, pm2 ...
उसके लिए:
heroku config:set NODE_ENV="production"
जो वास्तव में डिफ़ॉल्ट है।
NODE_ENV=production gulp bundle-production-app
से उत्पादन तैयार स्क्रिप्ट को बंडल करने के लिए उपयोग करता हूं , सर्वर में NODE_ENV सर्वर के वातावरण में है और देव मशीन में यह नहीं है। कुछ मशीनों में यह बुरा सपना है अगर यह सेट नहीं है और आप इसे हमेशा सेट करने की उम्मीद करते हैं । कुछ में, आप इसे नहीं करने की उम्मीद करते हैं, इसलिए आप नहीं जोड़ते हैं। वैसे भी, यूआई करते समय मैं यह स्पष्ट कर देता हूं कि अगर यह विकास मोड में है तो आपके पास कभी भी यह सवाल नहीं है कि क्या यह चालू या बंद है। यदि NODE_ENV है! == इसका उत्पादन आपके चेहरे पर है कि आप अन्य मोड में हैं, तो कोई बुरा सपना नहीं है। सब स्पष्ट, सब अच्छा।
/etc/environment
और चलाना चाहिए export NODE_ENV=production
?
चिंता करने की ज़रूरत नहीं है कि आप विंडोज, मैक या लिनक्स पर अपनी स्क्रिप्ट चला रहे हैं या क्रॉस-एनव पैकेज स्थापित करें । फिर आप अपनी स्क्रिप्ट आसानी से उपयोग कर सकते हैं, जैसे:
"scripts": {
"start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
"start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}
बड़े पैमाने पर इस पैकेज के डेवलपर्स के लिए सहारा।
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
अब हरोकू नोड.जेएस डिप्लॉय में डिफ़ॉल्ट है।
पर OSX मैं जोड़ने की सलाह देते चाहते हैं export NODE_ENV=development
करने के लिए अपने ~/.bash_profile
और / या ~/.bashrc
और / या ~/.profile
।
व्यक्तिगत रूप से मैं उस प्रविष्टि को अपने साथ जोड़ता हूं ~/.bashrc
और फिर ~/.bash_profile
~/.profile
उस फ़ाइल की सामग्री को आयात करता हूं , इसलिए यह पूरे वातावरण में सुसंगत है।
इन अतिरिक्त बनाने के बाद, सेटिंग्स लेने के लिए अपने टर्मिनल को पुनः आरंभ करना सुनिश्चित करें।
अगर आप खिड़कियों पर हैं। पहले दाहिने फ़ोल्डर में अपना cmd खोलें
set node_env={your env name here}
हिट दर्ज करें फिर आप अपना नोड शुरू कर सकते हैं
node app.js
यह आपके env सेटिंग से शुरू होगा
कई वातावरणों के लिए आपको (NODE_ENV पैरामीटर और निर्यात करने से पहले) सभी उत्तरों की आवश्यकता होती है, लेकिन मैं कुछ भी स्थापित किए बिना बहुत ही सरल दृष्टिकोण का उपयोग करता हूं। अपने पैकेज में.जॉन को आपकी जरूरत के अनुसार प्रत्येक स्क्रिप्ट के लिए एक स्क्रिप्ट डालें, जैसे:
...
"scripts": {
"start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
"start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
}
...
फिर, उपयोग शुरू करने के बजाय ऐप शुरू करने के npm start
लिए npm run script-prod
।
कोड में आप वर्तमान परिवेश तक पहुँच सकते हैं process.env.NODE_ENV
।
देखा।
विंडोज सीएमडी -> set NODE_ENV=production
विंडोज पॉवर्सशेल -> $env:NODE_ENV="production"
मैक -> export NODE_ENV=production
डैनियल का एक शानदार जवाब है जो सही तैनाती (सेट और भूल) प्रक्रिया के लिए बेहतर दृष्टिकोण है।
एक्सप्रेस का उपयोग करने वालों के लिए। आप ग्रंट-एक्सप्रेस-सर्वर का उपयोग कर सकते हैं जो शानदार भी है। https://www.npmjs.org/package/grunt-express-server
यह एक मौका हो सकता है कि आपने सीक्वल ऑब्जेक्ट के दो उदाहरण बनाए हैं
उदाहरण के लिए: var con1 = new Sequelize (); var con2 = नया अनुक्रम ();
से भी एक ही त्रुटि होगी