উবুন্টুতে এটি বেশ সহজ; আমি অ্যাপ্লিকেশনটি ব্যবহার করে চালাতে পারি:
$ NODE_ENV=production node myapp/app.js
তবে এটি উইন্ডোজে কাজ করে না। এমন কোনও কনফিগারেশন ফাইল রয়েছে যেখানে আমি বৈশিষ্ট্যটি সেট করতে পারি?
উবুন্টুতে এটি বেশ সহজ; আমি অ্যাপ্লিকেশনটি ব্যবহার করে চালাতে পারি:
$ NODE_ENV=production node myapp/app.js
তবে এটি উইন্ডোজে কাজ করে না। এমন কোনও কনফিগারেশন ফাইল রয়েছে যেখানে আমি বৈশিষ্ট্যটি সেট করতে পারি?
উত্তর:
উইন্ডোজের বর্তমান সংস্করণগুলি ডিফল্ট শেল হিসাবে পাওয়ারশেল ব্যবহার করে, তাই ব্যবহার করুন:
$env:NODE_ENV="production"
পার @ জাসালোনেনের উত্তর নীচে। আপনি যদি সিএমডিতে থাকেন (যা আর রক্ষণাবেক্ষণ করা হয় না), ব্যবহার করুন
set NODE_ENV=production
এটি আপনার কমান্ড প্রম্পটে কার্যকর করা উচিত যেখানে আপনি আপনার নোড.জেএস অ্যাপ্লিকেশনটি চালানোর পরিকল্পনা করছেন।
উপরের লাইনটি কমান্ড প্রম্পটের জন্য এনভায়রনমেন্ট ভেরিয়েবল NODE_ENV সেট করবে যেখানে আপনি কমান্ডটি কার্যকর করেন।
পরিবেশের পরিবর্তনগুলি বিশ্বব্যাপী সেট করতে যাতে সেগুলি কেবল একক কমান্ড প্রম্পটের বাইরে থাকে, আপনি কন্ট্রোল প্যানেলে সিস্টেম থেকে (বা প্রারম্ভিক মেনুতে অনুসন্ধান বাক্সে 'পরিবেশ' টাইপ করে) সরঞ্জামটি পেতে পারেন।
set NODE_ENV=production && node app
। আরো সুবিধামত আপনার কনফিগার package.json
তদনুসারে: "scripts": { "start": "set NODE_ENV=production && node app" }
।
echo %NODE_ENV%
এর বর্তমান মানটি পরীক্ষা করতে টাইপ করতে পারেন ।
cross-env
যদি আপনার টিম মিশ্র অপারেটিং সিস্টেমগুলিতে কাজ করে তবে ব্যবহার করা এই সমস্যার সর্বোত্তম সমাধান। @ মোওক্সের উত্তর এই প্রশ্নের উত্তর হিসাবে আমার পছন্দ হবে।
আমি সবেমাত্র একটি সুন্দর নোড.জেএস প্যাকেজ পেয়েছি যা একটি অনন্য সিনট্যাক্স, ক্রস প্ল্যাটফর্ম ব্যবহার করে পরিবেশের পরিবর্তনগুলি সংজ্ঞায়িত করতে অনেক সাহায্য করতে পারে।
https://www.npmjs.com/package/cross-env
এটি আপনাকে এরকম কিছু লেখার অনুমতি দেয়:
cross-env NODE_ENV=production my-command
যা বেশ সুবিধাজনক! উইন্ডোজ বা ইউনিক্স নির্দিষ্ট কোন আদেশ নেই!
পাওয়ারশেলে:
$env:NODE_ENV="production"
set NODE_ENV=production
পাওয়ারশেলে আমার পক্ষে কাজ করেনি তবে এটি করেছে। ধন্যবাদ!
$env:NODE_ENV="development"; gulp runMytask
। সেখানে আধা কোলন নোট করুন। গুল্প ফাইলটি প্রক্রিয়া.এন.ভি.এন.ডি.এন.ডি.এন.ভি. তে শর্তযুক্ত যুক্তি ব্যবহার করতে পারে। আপনি যদি সেট না করেন তবে এটি অপরিজ্ঞাত থাকবে।
cross-env NODE_ENV=production
বিকল্পটি প্যাকেজ.জসন থেকে এনপিএম কমান্ড চালনা করাতে এনভির সেট হওয়া দরকার কিনা এটিই আরও ভাল সমাধান। এটা তোলে $ env ব্যবহার করে পরে দেব / শঙ্কু উপর env সেট থেকে বের হতেই সহজ: NODE_ENV বিকল্প
এটি আদর্শ হবে যদি আপনি উইন্ডোজে নোড.জেএস শুরু করার জন্য আপনার কল হিসাবে একই লাইনে প্যারামিটার সেট করতে পারেন। নিম্নলিখিত সাবধানে দেখুন, এবং ঠিক বলেছেন হিসাবে এটি চালান:
আপনার কাছে এই দুটি বিকল্প রয়েছে:
কমান্ড লাইনে:
set NODE_ENV=production&&npm start
অথবা
set NODE_ENV=production&&node index.js
উইন্ডোজে এটির কাজ করার কৌশলটি হ'ল আপনার "&&" এর আগে এবং পরে সাদা স্থান সরিয়ে ফেলতে হবে। আপনার প্যাকেজ.জসন ফাইলটি নীচে start_windows (নীচে দেখুন) দিয়ে কনফিগার করেছেন। তারপরে কমান্ড লাইনে "এনপিএম রান স্টার্ট উইন্ডো" চালান।
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
তুমি ব্যবহার করতে পার
npm run env NODE_ENV=production
এটি সম্ভবত এটি করার সর্বোত্তম উপায়, কারণ এটি উইন্ডোজ এবং ইউনিক্স উভয় ক্ষেত্রেই সামঞ্জস্যপূর্ণ।
থেকে npm রান স্ক্রিপ্ট ডকুমেন্টেশন :
এনএভিভি স্ক্রিপ্ট একটি বিশেষ অন্তর্নির্মিত কমান্ড যা পরিবেশ সময়কগুলি তালিকাবদ্ধ করতে ব্যবহার করা যেতে পারে যা রানটাইমের সময় স্ক্রিপ্টের জন্য উপলব্ধ। যদি আপনার প্যাকেজে একটি "এনভিভি" কমান্ড সংজ্ঞায়িত করা হয় তবে এটি অন্তর্নির্মিতের চেয়ে অগ্রাধিকার গ্রহণ করবে।
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
এবং ... কিছুই ঘটেনি। আমি নিশ্চিত নই যে এই পদ্ধতিটি উইন্ডোজে কাজ করে।
আপনি যদি এনটিভিএস দিয়ে ভিজ্যুয়াল স্টুডিও ব্যবহার করছেন, আপনি প্রকল্পের বৈশিষ্ট্য পৃষ্ঠায় পরিবেশের ভেরিয়েবল সেট করতে পারেন:
আপনি দেখতে পাচ্ছেন, কনফিগারেশন এবং প্ল্যাটফর্মের ড্রপডাউনগুলি অক্ষম করা আছে (এটি কেন আমি খুব বেশি দূর পর্যন্ত দেখিনি) তবে আপনি যদি নিজের .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>
'ডিবাগ / রিলিজ' ড্রপডাউনটি নোড.জেএস শুরু করার আগে ভেরিয়েবলটি কীভাবে সেট করা হবে তা নিয়ন্ত্রণ করবে।
আমি win-node-env একটি মডিউল লিখেছিলাম যার সাহায্যে আপনি আপনার কমান্ডটি চালাতে পারবেন ঠিক যেমন * নিক্সে।
NODE_ENV=production node myapp/app.js
এটি NODE_ENV.cmd
এমন একটি তৈরি করে কাজ করে যা NODE_ENV
পরিবেশের পরিবর্তনশীল নির্ধারণ করে এবং বাকী কমান্ড এবং এর আরগগুলি সহ একটি শিশু প্রক্রিয়া তৈরি করে।
কেবল এটি ইনস্টল করুন (বিশ্বব্যাপী), এবং আপনার এনপিএম স্ক্রিপ্ট কমান্ডগুলি চালান, এটি তাদের স্বয়ংক্রিয়ভাবে কাজ করে।
npm install -g win-node-env
ভিজ্যুয়াল স্টুডিও 2013 এর উইন্ডোজ 7 64-বিটে নোড.জেএস ব্যবহার করার আমার অভিজ্ঞতাটি আপনাকে ব্যবহার করা দরকার to
setx NODE_ENV development
একটি সেন্টিমিডি উইন্ডো থেকে। এবং নতুন মানটি স্বীকৃত হওয়ার জন্য আপনাকে ভিজ্যুয়াল স্টুডিও পুনরায় চালু করতে হবে।
সেট সিনট্যাক্সটি কেবলমাত্র সেমিডি উইন্ডোতে সেট করা রয়েছে তার সময়কালের জন্য স্থায়ী হয়।
নোড.জেএস-তে সাধারণ পরীক্ষা:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
সেটটি ব্যবহার করার সময় এটি 'অপরিজ্ঞাপিত' প্রত্যাবর্তন করে এবং সেটেক্স ব্যবহার করে এবং ভিজ্যুয়াল স্টুডিও পুনরায় চালু করা হলে এটি 'বিকাশ' ফিরে আসবে।
cmd
- পাওয়ারশেল নয়? ওহ, উইন্ডোতে আসুন, এটি একসাথে পান।
নন-কমান্ড লাইন পদ্ধতিটি এখানে:
উইন্ডোজ 7 বা 10-এ, স্টার্ট মেনু অনুসন্ধান বাক্সে পরিবেশ টাইপ করুন এবং সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলগুলি সম্পাদনা করুন নির্বাচন করুন।
বিকল্পভাবে, কন্ট্রোল প্যানেল \ সিস্টেম এবং সুরক্ষা \ সিস্টেমে নেভিগেট করুন এবং উন্নত সিস্টেম সেটিংসে ক্লিক করুন
এটি অ্যাডভান্সড ট্যাব নির্বাচন করে সিস্টেম বৈশিষ্ট্য সংলাপ বাক্সটি খুলতে হবে। নীচে, আপনি একটি পরিবেশের ভেরিয়েবলগুলি ... বোতামটি দেখতে পাবেন। এটি ক্লিক করুন।
এনভায়রনমেন্ট ভেরিয়েবলস ডায়ালগ বক্স খুলবে।
সিস্টেম ভেরিয়েবলের নীচে নীচে, নতুন নির্বাচন করুন ... এটি নতুন সিস্টেমের পরিবর্তনশীল ডায়ালগ বাক্সটি খুলবে।
ভেরিয়েবলের নাম এবং মান লিখুন এবং ঠিক আছে ক্লিক করুন।
প্রসেস.এনভিতে নতুন ভেরিয়েবলটি উপলব্ধ হওয়ার জন্য আপনাকে সমস্ত সেমিডি প্রম্পটগুলি বন্ধ করতে হবে এবং আপনার সার্ভারটি পুনরায় চালু করতে হবে। এটি এখনও প্রদর্শিত না হলে আপনার মেশিনটি পুনরায় চালু করুন।
কেবল স্পষ্ট করার জন্য, এবং অন্য কারও জন্য যারা চুল কাটাতে পারে ...
আপনি ব্যবহার করে থাকেন Windows এ Git ব্যাশ , set node_env=production&& node whatever.js
কাজ বলে মনে হচ্ছে না । পরিবর্তে, নেটিভ সেমিডি ব্যবহার করুন। তারপরে, set node_env=production&& node whatever.js
প্রত্যাশা অনুযায়ী কাজগুলি ব্যবহার করে।
আমার ব্যবহারের কেস:
আমি উইন্ডোজে বিকাশ করি কারণ আমার কর্মপ্রবাহ অনেক দ্রুত, তবে আমার অ্যাপ্লিকেশনটির বিকাশ-নির্দিষ্ট মিডলওয়্যার উত্পাদন পরিবেশে ফায়ার করছে না তা নিশ্চিত করা দরকার।
পাওয়ারশেলটিতে আপনার অ্যাপ্লিকেশনটি চালানোর জন্য (যেহেতু &&
অনুমোদিত নয়):
($env:NODE_ENV="production") -and (node myapp/app.js)
নোট করুন যে সার্ভারটি যা করছে তার পাঠ্য আউটপুট চাপা পড়েছে এবং আমি নিশ্চিত নই যে এটি স্থিরযোগ্য। (@ জাসালোননের উত্তরটি প্রসারিত করা হচ্ছে))
"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
জন্য একাধিক এনভায়রনমেন্ট ভেরিয়েবল, একটি .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
:
npm install --save dotenv-safe
।index.js
) এবং সরাসরি process.env
কমান্ডের সাহায্যে এটি ব্যবহার করুন :require('dotenv').load()
console.log(process.env.DB_HOST)
আপনার ভিসিএসে ফাইলটি উপেক্ষা.env
করতে ভুলবেন না ।
আপনার প্রোগ্রামটি দ্রুত ব্যর্থ হয় যদি কোনও ভেরিয়েবল "সংজ্ঞায়িত" .env.example
হয় পরিবেশের পরিবর্তনশীল হিসাবে বা ইন সেট না করে .env
।
আপনি GITBASH টার্মিনাল ব্যবহার করছেন এমন ক্ষেত্রে, আপনি
"set NODE_ENV=production"
কী করতে পারেন তা "রফতানি টাইপ করুনNODE_ENV=production"
আমি "&&" ছাড়াই নলকাজ চালানোর জন্য এনপিএম স্ক্রিপ্ট ব্যবহার করেছি
NODE_ENV = টেস্ট কেসগুলি এনপিএম রান বীজ-ডিবি
যদি NODE_ENV বা অন্য কোনও পরিবেশের ভেরিয়েবল সঠিক মান সরবরাহ না করে তবে ভিএস কোড পুনরায় চালু করুন। এটি পুনরায় আরম্ভের পরে কাজ করা উচিত।