ওএস এক্সে উত্পাদন / বিকাশে কীভাবে NODE_ENV সেট করবেন


322

এক্সপ্রেস.জেএস পরিবেশে ব্যবহারের জন্য। কোন পরামর্শ?


একাধিক প্ল্যাটফর্ম সমাধানের জন্য আপনি উত্তরটি খুঁজে পেতে পারেন stackoverflow.com/a/57509175/11127383
ড্যানিয়েল ড্যানিয়েলেকি

উত্তর:


663

আপনার অ্যাপ্লিকেশন চালানোর আগে, আপনি কনসোলে এটি করতে পারেন,

export NODE_ENV=production

অথবা আপনি উইন্ডোতে থাকলে আপনি এটি ব্যবহার করে দেখতে পারেন:

SET NODE_ENV=production

অথবা আপনি আপনার অ্যাপ্লিকেশনটি এভাবে চালাতে পারেন:

NODE_ENV=production node app.js

আপনি এটি আপনার জেএস ফাইলে সেট করতে পারেন:

process.env.NODE_ENV = 'production';

তবে আমি এটি আপনার রানটাইম ফাইলে করার পরামর্শ দিচ্ছি না, যেহেতু আপনার সার্ভারে ভিআইএম খোলানো এবং এটি উত্পাদনতে পরিবর্তন করা সহজ নয়। আপনি আপনার ডিরেক্টরিতে একটি কনফিগারেশন.জসন ফাইল তৈরি করতে পারেন এবং আপনার অ্যাপ্লিকেশন চলার সময় এটি এ থেকে পড়ে এবং কনফিগারেশন সেট করে।


12
এটা খারাপ পরামর্শ। এটি process.env.NODE_ENVঅ্যাপ্লিকেশন থেকেই নির্ভরযোগ্যভাবে সেটিংটি হয়ে উঠবে । ড্যানিয়েল নীচে লিঙ্কযুক্ত হিসাবে আপনার পরিবেশের পরিবর্তনশীল সঠিকভাবে সেট করুন।
এমকে সাফি

15
NODE_ENVদ্বিতীয় উদাহরণ হিসাবে ( NODE_ENV=production node app.js) যেমন আপনি অ্যাপ্লিকেশনটি চালান ততবার আমি স্পষ্টভাবে সেটিংয়ের অনুরাগী । আপনি নিজের লোকালটিকে NODE_ENVপিছনে সেট করতে ভুলে যাওয়া ইভেন্টে আপনি সম্ভবত ভবিষ্যতের কিছু চুল টানা থেকে নিজেকে বাঁচাতে পারেন development
জন

মোটেও তেমন উজ্জ্বল নয়। প্রতিবার আপনি আপনার অ্যাপ্লিকেশন চালানোর সময় আপনাকে সেই এনভির ভার যোগ করতে হবে। যে স্তন্যপান। নীচে আরও ভাল সমাধান পোস্ট।
লুকাশ লিসিস

2
পড়ুন npmjs.com/package/cross-env একটি সহজ ক্রস-প্ল্যাটফর্ম সমাধান জন্য। cross-env NODE_ENV=productionউইন্ডোজ এবং লিনাক্স / ম্যাক উপর কাজ করে।
আন্তনব

1
@ গ্লেব NODE_ENV=production forever app.jsকাজ করা উচিত।
ফরিদ নুরি নেশাত

102

প্যাকেজ.জসনে:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

তারপরে টার্মিনালে চালান:

npm start

1
প্যাকেজ.জেডসনে একগুচ্ছ স্ক্রিপ্ট স্থাপন শুরু করবেন না, এটি খারাপ অভ্যাস কারণ আপনি অসঙ্গতিগুলি প্রবর্তন করেন এবং এটি আপনার প্রকল্পগুলিতে অপরিবর্তনীয়তা বধ করে। আমি অনেক জানি মানুষের ঘোঁৎ ঘোঁৎ বা নি: শ্বাসে চালানোর জন্য স্ক্রিপ্ট তৈরি কিন্তু যে না
PositiveGuy

38
@ ওয়েবেডটিডিডি আপনি কী সম্পর্কে কথা বলছেন? এই স্ক্রিপ্টগুলি মেকফিল কীভাবে কাজ করে একইভাবে ব্যবহার করতে বোঝানো হয়। এটিকে উদাহরণ হিসাবে ব্যবহার করা বা আপনি ঝাঁকুনি চালানোর জন্য যেমন উল্লেখ করেছেন ঠিক তত যুক্তিসঙ্গত ব্যবহারের ক্ষেত্রে। সাধারণ কাজের জন্য আমি এখন ঝালও ব্যবহার করি না এবং এটি সমস্ত স্ক্রিপ্টের মধ্যেই করি না, স্টাফ কাজ করা আরও দ্রুত এবং আমি ওয়েবপ্যাকটি সেই কাজটি করতে পারি যা গুল্প দ্বারা ব্যবহৃত হত।
মার্কো গ্রেইক

15
@ ডাব্লুটিএফ - প্যাকেজ.জসনে স্ক্রিপ্টগুলি ব্যবহার করা আপনার "খারাপ অভ্যাস" বলতে কী বোঝায়? এটি স্ক্রিপ্টগুলির মূল বিষয়: বিভাগ, স্ক্রিপ্টগুলি রাখার জন্য! এটি পুরোপুরি বৈধ এবং কুঁচক বা গ্রান্টের প্রয়োজনীয়তা দূর করে। সমস্ত কমান্ড এবং ওয়েবপ্যাকের মাধ্যমে সম্পন্ন হয়েছে।
তেত্রদেব

6
@ ডাব্লুটিএফএফ স্ক্রিপ্টগুলি ব্যবহার করা সুসংগততাকে অনেকাংশে উন্নত করে। আপনি একাধিক প্রকল্পে ব্যবহার করার জন্য একটি কমান্ডের একটি সেট সেট আপ করতে পারেন যা একই অন্তর্নিহিত বিল্ড স্ক্রিপ্টগুলি, গ্রন্থাগারগুলি ইত্যাদি ব্যবহার করতে পারে না You আপনি কমপক্ষে তথ্য এবং উদাহরণ দিয়ে আপনার বিষয়টিকে ব্যাক করার চেষ্টা করতে পারেন।
লুইস ডায়মন্ড

4
ফেলে NODE_ENV=productionpackage.json অনেক অর্থে দেখা যায় না। npm startউন্নয়ন চলমান এটি উত্পাদন চালাতে হবে। আপনি নিজের কোডটি এমনভাবে লিখতে পারেন যেন এটি সর্বদা উত্পাদন, যেহেতু আপনি সর্বদা সেভাবে চালান। আমি এটি করার এক কারণ হ'ল অন্য মডিউলগুলি (যেমন এক্সপ্রেস) কে উত্পাদন মোডে চালাতে বাধ্য করা। তারা যদি কখনও পরিবর্তন না করে তবে পরিবেশের পরিবর্তনগুলি কেন মোটেই ব্যবহার করবেন?
নাটোয়ামি

66

.envএখানে এখনও কেউ উল্লেখ করা হয়নি? .envআপনার অ্যাপ্লিকেশন রুটে একটি ফাইল তৈরি করুন require('dotenv').config()এবং তারপরে মানগুলি পড়ুন। সহজেই পরিবর্তিত, সহজে পঠন, ক্রস প্ল্যাটফর্ম।

https://www.npmjs.com/package/dotenv


1
অদ্ভুত কেউ এর উল্লেখ করেনি, আমার মতে সেরা সমাধান। বাকি ভেরিয়েবলের সাথে একই ফাইলটিতে পরিবেশের নাম দিন।
Asinus রেক্স

2
.Env ফাইলে NODE_ENV সেট করা কাজ করবে না। এটি দেখুন: github.com/motdotla/dotenv/issues/328
মাইকেল জেলেনস্কি

আমার "mode": "production"জন্য .envফাইলটিতে সেটিং কাজ করেছে।
ডার্কলাইট 1

46

export NODE_ENV=production খারাপ সমাধান, এটি পুনরায় চালু হওয়ার পরে অদৃশ্য হয়ে যায়।

যদি আপনি সেই পরিবর্তনশীল সম্পর্কে আর চিন্তা করতে না চান - এটি এই ফাইলে যুক্ত করুন:

/etc/environment

রফতানি বাক্য গঠন ব্যবহার করবেন না, কেবল লিখুন (কিছু লাইনে ইতিমধ্যে সেখানে থাকলে নতুন লাইনে):

NODE_ENV=production

এটি পুনরায় চালু করার পরে কাজ করে। আপনাকে আর কোনও জায়গায় রফতানি NODE_ENV = প্রোডাকশন কমান্ডটি পুনরায় প্রবেশ করতে হবে না এবং কেবল নিজের পছন্দ মতো কোনও নোড ব্যবহার করতে হবে - চিরকাল, দুপুর ২ ...

হিরকুর জন্য:

heroku config:set NODE_ENV="production"

যা আসলে ডিফল্ট।


2
দুঃস্বপ্ন রক্ষণাবেক্ষণ। এমন কোনও বাক্সের কী হবে যেখানে আপনার / ইত্যাদি অনুমতি নেই?
টমাস ম্যাককেবে

1
আমি ব্যক্তিগতভাবে NODE_ENV=production gulp bundle-production-appউত্পাদন প্রস্তুত স্ক্রিপ্ট বান্ডিল করতে ব্যবহার করি , সার্ভারে NODE_ENV সার্ভারের পরিবেশে এবং ডেভ মেশিনে এটি নেই। কিছু মেশিনে এটি স্বপ্নদোষ হয় যদি এটি সেট না করা থাকে এবং আপনি এটি সর্বদা সেট করে রাখবেন বলে আশা করেন । কারও কারও মধ্যে আপনি এটি না রাখার প্রত্যাশা করেন, সুতরাং আপনি যোগ করবেন না। যাইহোক, ইউআই করার সময় আমি এটি পরিষ্কার করে দিচ্ছি যে এটি যদি ডেভলপমেন্ট মোডে থাকে তবে এটি চালু বা বন্ধ থাকলে আপনার কোনও প্রশ্নই আসে না। যদি NODE_ENV হয়! == উত্পাদন এটি আপনার মুখের মধ্যে রয়েছে যে আপনি অন্য মোডে রয়েছেন, তাই দুঃস্বপ্নের কিছু নেই। সব পরিষ্কার, সব ভাল।
লুকাস লিসিস

কীভাবে এটি চালিয়ে যাওয়া যায় সে সম্পর্কে কথা বলার জন্য +1। আমি অবাক হয়েছি যে কতজন লোক কেবল এটিই চলবে তা ভেবে কেবল বর্তমান অধিবেশনে সেট করেছেন। পুনরায় চালু হওয়ার আগে কী হবে ? আপনি এখনই সেটি সেট করতে চান, তাহলে আপনি এটি রাখা উচিত /etc/environment এবং রান export NODE_ENV=production?
নাটোয়ামি

23

আপনি উইন্ডোজ, ম্যাক বা লিনাক্সে আপনার স্ক্রিপ্টগুলি ক্রস-এনভিভ প্যাকেজ ইনস্টল করছেন কিনা তা চিন্তা করার দরকার নেই । তারপরে আপনি সহজেই আপনার স্ক্রিপ্টগুলি ব্যবহার করতে পারেন:

"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


9

উইন্ডোজ পাওয়ারশেলের জন্য এই কমান্ডটি ব্যবহার করুন

$env:NODE_ENV="production" ; node app.js

6

ওএসএক্স-এ আমি export NODE_ENV=developmentআপনার ~/.bash_profileএবং / অথবা ~/.bashrcএবং / অথবা এ যুক্ত করার পরামর্শ দেব ~/.profile

ব্যক্তিগতভাবে আমি আমার এ প্রবেশটি যুক্ত করি ~/.bashrcএবং তারপরে ~/.bash_profile ~/.profileসেই ফাইলটির বিষয়বস্তু আমদানি করি, সুতরাং এটি পরিবেশের সাথে জুড়েই সুসংগত।

এই সংযোজনগুলি করার পরে, সেটিংস বাছাই করতে আপনার টার্মিনালটি পুনরায় চালু করতে ভুলবেন না।


2

আপনি যদি উইন্ডোতে থাকেন। প্রথমে ডান ফোল্ডারে আপনার সেমিডিটি খুলুন

set node_env={your env name here}

এন্টার টিপুন এবং তারপরে আপনি আপনার নোডটি শুরু করতে পারেন

node app.js

এটি আপনার এনএভিভি সেটিংস দিয়ে শুরু হবে


1
এটি আবার চালু হওয়ার পরে অদৃশ্য হবে না? উইন্ডো নেই, নিজেকে চেষ্টা করতে পারি না।
লুকাস লাইসিস

আপনি যদি নোড পুনরায় আরম্ভ করার বিষয়ে জিজ্ঞাসা করছেন, আপনি কমান্ড প্রম্পটটি সম্পূর্ণ বন্ধ না করা পর্যন্ত এটি অদৃশ্য হবে না। তবে উইন্ডোজ সার্ভার যদি পুনরায় চালু হয় তবে এটি অদৃশ্য হয়ে যাবে।
গ্যারিওনডেমে

2
ওএস পুনঃসূচনা সম্পর্কে কথা বলছি। এ কারণেই আমি বার বার এই সমস্যাটি সম্পর্কে উইন্ডোজ আপডেটগুলি ইনস্টল করা বা কেবল কোনও পুনরায় চালু করার জন্য অবাক হওয়ার জন্য আরও একটি উপায় খুঁজে পাচ্ছি।
লুকাস লিসিস

2

আপনি যদি নিজের অ্যাপ্লিকেশনটিতে ওয়েবপ্যাক ব্যবহার করেন তবে আপনি কেবল এটি ব্যবহার করে সেখানে সেট করতে পারেনDefinePlugin ...

সুতরাং আপনার মধ্যে pluginঅধ্যায়, সেট NODE_ENV করতে production:

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]

1

একাধিক পরিবেশের জন্য আপনার উত্তরগুলির আগে সমস্তগুলি প্রয়োজন (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

Voila।


NODE_ENV হয় "উন্নয়ন" বা "উত্পাদন" হতে হবে উপরের তৃতীয় পক্ষের কোড দ্বারা স্বীকৃত নয় (যদিও আপনি এটির জন্য
প্রসেসিং.এনভি

1

উইন্ডোজ সিএমডি -> set NODE_ENV=production

উইন্ডোজ পাওয়ারশেল -> $env:NODE_ENV="production"

ম্যাক -> export NODE_ENV=production


0

ড্যানিয়েলের একটি দুর্দান্ত উত্তর রয়েছে যা সঠিক স্থাপনার (সেট এবং ভুলে যাওয়া) প্রক্রিয়াটির জন্য আরও ভাল পদ্ধতির।

এক্সপ্রেস ব্যবহারকারীদের জন্য। আপনি গ্রান্ট-এক্সপ্রেস-সার্ভার ব্যবহার করতে পারেন যা দুর্দান্ত fant https://www.npmjs.org/package/grunt-express-server


0

এটি এমন একটি সুযোগ হতে পারে যে আপনি সিক্যুয়ালাইজ অবজেক্টের দুটি উদাহরণ তৈরি করেছেন

উদাহরণস্বরূপ: var con1 = new Sequelize (); var con2 = নতুন সিক্যুইলাইজ ();

এছাড়াও একই ত্রুটি ঘটবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.