NODE_ENV কী এবং এক্সপ্রেসে কীভাবে এটি ব্যবহার করবেন?


181

এটি আমার অ্যাপ্লিকেশন, বর্তমানে আমি প্রযোজনায় চলছে।

var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
    app.use(express.favicon());
    app.use(express.static(settings.c.WEB_PATH + '/public'));
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.methodOverride());
    app.use(express.session({
            cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
            secret:'hamster',
            store: r_store,
            }));
    app.use(useragent.express());
    app.use(flash());
    app.use(passport.initialize());
    app.use(passport.session());
});

তবে আমি NODE_ENVএটি সম্পর্কে জানতে পেরেছি এবং এটি ব্যবহার করতে চাই। কিভাবে আমি এটি করতে পারব?


আপনার ক্ষেত্রে আমি ধরে নিয়েছি আপনি যা ব্যবহার করতে পারবেন তা হ'ল app.configure('development', ...)বা "উত্পাদন" কেবলমাত্র উন্নয়ন বা উত্পাদন পরিবেশের জন্য নির্দিষ্ট সেটিংস সেট করতে। Expressjs.com/api.html#app.configure
Andreas Hultgren

উত্তর:


355

NODE_ENVএকটি হল এনভায়রনমেন্ট ভেরিয়েবল দ্বারা জনপ্রিয় দ্রুতগামী ওয়েবসার্ভার ফ্রেমওয়ার্ক। যখন কোনও নোড অ্যাপ্লিকেশন চালিত হয়, তখন এটি পরিবেশের পরিবর্তনশীলের মানটি পরীক্ষা করতে পারে এবং মানটির ভিত্তিতে বিভিন্ন জিনিস করতে পারে। NODE_ENVনির্দিষ্ট পরিবেশটি উত্পাদন বা উন্নয়ন পরিবেশ কিনা তা নির্দিষ্ট করে নির্দিষ্টভাবে ব্যবহার করা হয় (কনভেনশন দ্বারা) । একটি সাধারণ ব্যবহারের ক্ষেত্রে অতিরিক্ত পরিবেশে চলমান থাকলে অতিরিক্ত ডিবাগিং বা লগিং কোড চলছে।

NODE_ENV অ্যাক্সেস করা হচ্ছে

পরিবেশের পরিবর্তনশীল নিজেকে অ্যাক্সেস করতে আপনি নীচের কোডটি ব্যবহার করতে পারেন যাতে আপনি নিজের চেক এবং যুক্তি সম্পাদন করতে পারেন:

var environment = process.env.NODE_ENV

অথবা বিকল্পভাবে এক্সপ্রেস 'ব্যবহার করুন app.get('env')( দ্রষ্টব্য: এতে ডিফল্ট হবে "development")

আপনি যদি NODE_ENVআপনার পরিবেশের জন্য স্পষ্টভাবে সেট না করে থাকেন তবে সচেতন থাকবেন undefined

NODE_ENV সেট করা হচ্ছে

কীভাবে বাস্তবে পরিবেশের পরিবর্তনশীল সেট করতে হয় অপারেটিং সিস্টেম থেকে অপারেটিং সিস্টেমের মধ্যে পরিবর্তিত হয় এবং আপনার ব্যবহারকারী সেটআপের উপরও নির্ভর করে।

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

  • লিনাক্স এবং ম্যাক :export NODE_ENV=production
  • উইন্ডোজ :$env:NODE_ENV = 'production'

দীর্ঘমেয়াদে আপনার এটি অবিচল থাকা উচিত যাতে আপনি রিবুট করলে সেটি সেট না হয়ে যায় - এটি করার জন্য সমস্ত সম্ভাব্য পদ্ধতির তালিকা না করে আমি আপনাকে কীভাবে এটি করব তা অনুসন্ধান করতে দেব!

কনভেনশনটি নির্দেশ দিয়েছে যে আপনার কেবলমাত্র দুটি মান ব্যবহার করা উচিত NODE_ENV, উভয় productionবা developmentসমস্ত ছোট হাতের জন্য। আপনাকে আরও মান যোগ করাতে বাধা দেওয়ার কিছু নেই, তবে সম্ভবত এটি একটি ভাল ধারণা নয়, কারণ আমি ব্যবহার করি এমন অনেক নোড_মডিউলগুলিতে এই ধরণের কোডটি প্রচুর দেখতে পাচ্ছি:

var development = process.env.NODE_ENV !== 'production';

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


5
এক্সপ্রেস 4 এ, app.configure()সরানো হয়েছে। এক্সপ্রেস 4 মাইগ্রেশন নির্দেশিকা থেকে বিশেষ পরামর্শ দেওয়া হচ্ছে "ব্যবহার process.env.NODE_ENVবা app.get('env')পরিবেশ সনাক্ত করতে এবং সেই অনুযায়ী অ্যাপ্লিকেশন কনফিগার করার।"
ক্রিস বার্টলে

3
আমি মনে করি অ্যাপ.জেট ('এনভি') ব্যবহার করা সবচেয়ে ভাল কারণ পরিবেশটি যদি অপরিজ্ঞাত নোডের সাথে ডিফল্ট হয় তবে কেবলমাত্র ভেরিয়েবলটি পরীক্ষা করে নিজেকে
অপরিজ্ঞাত করে

11
ভাল পয়েন্ট - আমি ডিফল্ট হাইলাইট করার জন্য একটি নোট যুক্ত করেছি। তবে আমার ব্যক্তিগত অনুভূতিটি হ'ল আপনার app.get('env')সেই কারণটি ব্যবহার করা উচিত নয় । এটি কভার করে দেয় যে এই গুরুত্বপূর্ণ পরিবর্তনশীলটি সেট করা নেই - আপনি যখন এক্সপ্রেসের বাইরে থেকে অ্যাক্সেস করেন তখন জিনিসগুলিকে বেমানান বলে মনে হয়। উপরন্তু আমি মনে করি এটা ঘটনাক্রমে ডিবাগ কোড আছে কম ক্ষতিকারক চলমান না চেয়ে এটা ঘটনাক্রমে আছে একটি উন্নয়ন পরিবেশ উপর চলমান একটি পরীক্ষামূলক পরিবেশে উপর।
এড হিঙ্কলিফ

5
এক্সপ্রেস অ্যাপ্লিকেশনগুলিতে NODE_ENV নির্ধারণের সেটিংয়ের প্রভাবগুলি আমি পরিমাপ করেছি। এটি ডিফল্ট হয় development- অন্যান্য জিনিসের মধ্যে - এর অর্থ এই যে প্রতিটি অনুরোধের জন্য টেমপ্লেটগুলি পুনরায় প্রসেস করা হবে। জেড ব্যবহার করার সময় ফলাফলটি উত্পাদন এবং বিকাশের মধ্যে performance 75% এর পারফরম্যান্স লাভ বা ড্রেন। আমি সেই apmblog.dynatrace.com/2015/07/22/… এ
ড্যানিয়েল খান

8
আমি মনে করি এক্সপ্রেস প্রকল্পগুলির জন্য, "উত্পাদন" এবং "বিকাশ" ছাড়াও, স্বয়ংক্রিয় পরীক্ষা চালানোর জন্য আপনার কমপক্ষে আরও একটি "পরীক্ষা" দরকার। জনবহুল টেস্ট ডেটার জন্য আপনি আলাদা ডিবি ব্যবহার করতে চাইতে পারেন।
ভোররাত

19

NODE_ENV একটি পরিবেশগত পরিবর্তনশীল যা এক্সপ্রেস সার্ভারে নোড পরিবেশের জন্য দাঁড়িয়ে ।

আমরা কোন পরিবেশে আছি তা সেটাকেই আমরা সনাক্ত করি।

এটি ব্যবহার খুব সাধারণ ব্যাপার productionএবং development

সেট করুন:

export NODE_ENV=production

পাওয়া:

আপনি এটি ব্যবহার করে পেতে পারেন app.get('env')


10

আমি ধরে নিই যে মূল প্রশ্নটি কীভাবে এক্সপ্রেস এই পরিবেশের পরিবর্তনশীল ব্যবহার করে included

এক্সপ্রেস তার নিজস্ব ডিফল্ট আচরণ পরিবর্তন করতে NODE_ENV ব্যবহার করে। উদাহরণস্বরূপ, বিকাশ মোডে, ডিফল্ট ত্রুটি হ্যান্ডলার ব্রাউজারে একটি স্ট্যাকট্রেস ফেরত পাঠায়। উত্পাদন মোডে, সাড়া কেবলমাত্র Internal Server Error, বিশ্বের কাছে প্রয়োগের বিবরণ ফাঁস করা এড়ানো।

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