আমি কীভাবে উইন্ডোজে NODE_ENV = উত্পাদন সেট করতে পারি?


340

উবুন্টুতে এটি বেশ সহজ; আমি অ্যাপ্লিকেশনটি ব্যবহার করে চালাতে পারি:

$ NODE_ENV=production node myapp/app.js

তবে এটি উইন্ডোজে কাজ করে না। এমন কোনও কনফিগারেশন ফাইল রয়েছে যেখানে আমি বৈশিষ্ট্যটি সেট করতে পারি?


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

উত্তর:


485

উইন্ডোজের বর্তমান সংস্করণগুলি ডিফল্ট শেল হিসাবে পাওয়ারশেল ব্যবহার করে, তাই ব্যবহার করুন:

$env:NODE_ENV="production"

পার @ জাসালোনেনের উত্তর নীচে। আপনি যদি সিএমডিতে থাকেন (যা আর রক্ষণাবেক্ষণ করা হয় না), ব্যবহার করুন

set NODE_ENV=production

এটি আপনার কমান্ড প্রম্পটে কার্যকর করা উচিত যেখানে আপনি আপনার নোড.জেএস অ্যাপ্লিকেশনটি চালানোর পরিকল্পনা করছেন।

উপরের লাইনটি কমান্ড প্রম্পটের জন্য এনভায়রনমেন্ট ভেরিয়েবল NODE_ENV সেট করবে যেখানে আপনি কমান্ডটি কার্যকর করেন।

পরিবেশের পরিবর্তনগুলি বিশ্বব্যাপী সেট করতে যাতে সেগুলি কেবল একক কমান্ড প্রম্পটের বাইরে থাকে, আপনি কন্ট্রোল প্যানেলে সিস্টেম থেকে (বা প্রারম্ভিক মেনুতে অনুসন্ধান বাক্সে 'পরিবেশ' টাইপ করে) সরঞ্জামটি পেতে পারেন।


112
কারো জন্য এখনও এই সঙ্গে সংগ্রাম: set NODE_ENV=production && node app। আরো সুবিধামত আপনার কনফিগার package.jsonতদনুসারে: "scripts": { "start": "set NODE_ENV=production && node app" }
অ্যাম্বারল্যাম্পস

5
@ শুুরুইলিউ কমান্ডটি কিছুই আউটপুট দেয় না, তবে আপনি echo %NODE_ENV%এর বর্তমান মানটি পরীক্ষা করতে টাইপ করতে পারেন ।
জানি হার্টিকায়েন

169
শিরোনাম: "NODE_ENV = উত্পাদন && সেট করুন" ভেরিয়েবলটিতে একটি পিছনের স্থান যুক্ত করে। ঘোস্টের মতো নোড অ্যাপ্লিকেশনগুলি ভেঙে দেয় এমন অতিরিক্ত স্থান এড়াতে আমার "NODE_ENV = উত্পাদন &&" সেট করা দরকার।
Daw

12
@ অ্যাম্বার ল্যাম্পগুলি যে কোনও ভাল সমাধান নয় কারণ NODE_ENV তখন সমস্ত মেশিনের জন্য কেবল হার্ডকোডযুক্ত; আসল লক্ষ্য হ'ল একটি এনভির ভেরিয়েবল ব্যবহার করে মেশিন দ্বারা এনভিটি পরিবর্তন করা বা কমান্ড লাইনে মানটি পাস করা, এটি প্যাকেজ.জেসন ফাইলে হার্ডকোড নয়।
আলেকজান্ডার মিলস

6
আমি মনে করি cross-envযদি আপনার টিম মিশ্র অপারেটিং সিস্টেমগুলিতে কাজ করে তবে ব্যবহার করা এই সমস্যার সর্বোত্তম সমাধান। @ মোওক্সের উত্তর এই প্রশ্নের উত্তর হিসাবে আমার পছন্দ হবে।
ফিল্ক

230

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

https://www.npmjs.com/package/cross-env

এটি আপনাকে এরকম কিছু লেখার অনুমতি দেয়:

cross-env NODE_ENV=production my-command

যা বেশ সুবিধাজনক! উইন্ডোজ বা ইউনিক্স নির্দিষ্ট কোন আদেশ নেই!


25
যদিও প্রথম উত্তরটি সত্য। আমি মনে করি এই উত্তরটি সবচেয়ে নির্ভরযোগ্য এবং ব্যবহার করা উচিত
d4rklit3

এটি একটি দুর্দান্ত সমাধান!
কিরিল গুসায়াতিন

সহজ এবং পুরোপুরি আমার সমস্যা সমাধান করে। আমি কেবল লিনাক্সে তৈরি করতে সক্ষম হয়েছি। এটি লিনাক্স এবং উইন্ডোজ উভয়ই সমাধান করেছে।
tista3

এই উত্তরটি আরও ভালবাসার দাবিদার, গ্রহণযোগ্য হওয়া উচিত :)
হোনজা কালফাস

এটি আমার পক্ষেও সেরা উত্তর
নওস

166

পাওয়ারশেলে:

$env:NODE_ENV="production"

4
PS: $ এবং
জর্জ

6
set NODE_ENV=productionপাওয়ারশেলে আমার পক্ষে কাজ করেনি তবে এটি করেছে। ধন্যবাদ!
রাগ

6
ভিজ্যুয়াল স্টুডিও কোডের মধ্যে পাওয়ারশেল থেকে এটি কাজ করতে কিছুটা সংগ্রাম করেছে। ভেবেছিলাম আমি সমাধান এখানে ছেড়ে দেব। আমি একটি "গুল্প" কমান্ড চালানোর চেষ্টা করছিলাম, যখন সঠিক এনভির মান নির্ধারণ করা হয়েছিল। এটি আমার জন্য কাজ ক্ষত আপ হল: $env:NODE_ENV="development"; gulp runMytask। সেখানে আধা কোলন নোট করুন। গুল্প ফাইলটি প্রক্রিয়া.এন.ভি.এন.ডি.এন.ডি.এন.ভি. তে শর্তযুক্ত যুক্তি ব্যবহার করতে পারে। আপনি যদি সেট না করেন তবে এটি অপরিজ্ঞাত থাকবে।
dvsoukup

2
শুধু এই সমাধান উইন্ডোজ 10 এবং webpack 3.8.1 আমার জন্য কাজ
Роман Арсеньев

1
এটি নিখুঁত কাজ করে। তবে, cross-env NODE_ENV=productionবিকল্পটি প্যাকেজ.জসন থেকে এনপিএম কমান্ড চালনা করাতে এনভির সেট হওয়া দরকার কিনা এটিই আরও ভাল সমাধান। এটা তোলে $ env ব্যবহার করে পরে দেব / শঙ্কু উপর env সেট থেকে বের হতেই সহজ: NODE_ENV বিকল্প
Drenai

105

এটি আদর্শ হবে যদি আপনি উইন্ডোজে নোড.জেএস শুরু করার জন্য আপনার কল হিসাবে একই লাইনে প্যারামিটার সেট করতে পারেন। নিম্নলিখিত সাবধানে দেখুন, এবং ঠিক বলেছেন হিসাবে এটি চালান:

আপনার কাছে এই দুটি বিকল্প রয়েছে:

  1. কমান্ড লাইনে:

    set NODE_ENV=production&&npm start

    অথবা

    set NODE_ENV=production&&node index.js
  2. উইন্ডোজে এটির কাজ করার কৌশলটি হ'ল আপনার "&&" এর আগে এবং পরে সাদা স্থান সরিয়ে ফেলতে হবে। আপনার প্যাকেজ.জসন ফাইলটি নীচে start_windows (নীচে দেখুন) দিয়ে কনফিগার করেছেন। তারপরে কমান্ড লাইনে "এনপিএম রান স্টার্ট উইন্ডো" চালান।

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }

1
ডিএফ কীভাবে এটি এইভাবে কাজ করতে পারে তা জানতে চান।
এসসি_চুপাচাবড়া

2
আমার জন্য কাজ করেছেন। "NODE_ENV = প্রোডাকশন && নোডমন সার্ভার.js সেট করা সত্ত্বেও" সাদা স্থানটি সরিয়ে ফেলতে হয়েছিল
এসসি_চুপাচাবড়া

2
যদি উপরের উত্তরটি চেষ্টা করার আগে আমি এটি খুব বেশি করে পড়তে চাইতাম তবে আমার কিছুটা সময় বাঁচত। : \
জেফ

1
অস্পষ্টভাবে সম্পর্কিত নোটটিতে আমি দেখতে পেয়েছি যে একাধিক কমান্ড একসাথে শৃঙ্খলাবদ্ধ করার সময় উইন্ডোজগুলিতে প্রত্যাশা অনুযায়ী && কাজ করে না। সন্দেহ হলে ব্যবহার করার চেষ্টা করুন পরিবর্তে
মাইক

1
এটি আমার জন্য সিএমডি এবং পাওয়ার-শেল উভয় থেকে উইন্ডোজ 10 64 বিট মেশিনে কাজ করেছে
আনি

30

তুমি ব্যবহার করতে পার

npm run env NODE_ENV=production

এটি সম্ভবত এটি করার সর্বোত্তম উপায়, কারণ এটি উইন্ডোজ এবং ইউনিক্স উভয় ক্ষেত্রেই সামঞ্জস্যপূর্ণ।

থেকে npm রান স্ক্রিপ্ট ডকুমেন্টেশন :

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


3
ভেরিয়েবল সেট সহ আমরা অন্য কমান্ড কীভাবে প্রয়োগ করতে পারি? এটি কাজ করছে বলে মনে হচ্ছে না: এনপিএম চালনা এনএভিডি NODE_ENV = উত্পাদন && প্রতিধ্বনি $ NODE_ENV। সম্ভবত তারা দুটি পৃথক শেল কার্যকর করা হয়?
জোনাস কেলো

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


3
@JonasKello আপনি এই ব্যবহার করবেন: হয় বাধ্যতামূলক । আপনি যে আদেশ চান তা দিয়ে প্রতিস্থাপন করুন । npm run env NODE_ENV=production -- node -e 'console.log(process.env.NODE_ENV)'--node -e 'console.log(process.env.NODE_ENV)'
Pauan

এই আদেশ দিয়ে এটি চেষ্টা করে: npm run env NODE_TLS_REJECT_UNAUTHORIZED=0 -- node --inspect ./etc/http-req-standalone.jsএবং ... কিছুই ঘটেনি। আমি নিশ্চিত নই যে এই পদ্ধতিটি উইন্ডোজে কাজ করে।
jcollum

14

আপনি যদি এনটিভিএস দিয়ে ভিজ্যুয়াল স্টুডিও ব্যবহার করছেন, আপনি প্রকল্পের বৈশিষ্ট্য পৃষ্ঠায় পরিবেশের ভেরিয়েবল সেট করতে পারেন:

ভিজ্যুয়াল স্টুডিও এনটিভিএস প্রকল্পের সম্পত্তি

আপনি দেখতে পাচ্ছেন, কনফিগারেশন এবং প্ল্যাটফর্মের ড্রপডাউনগুলি অক্ষম করা আছে (এটি কেন আমি খুব বেশি দূর পর্যন্ত দেখিনি) তবে আপনি যদি নিজের .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>

'ডিবাগ / রিলিজ' ড্রপডাউনটি নোড.জেএস শুরু করার আগে ভেরিয়েবলটি কীভাবে সেট করা হবে তা নিয়ন্ত্রণ করবে।


12

আমি win-node-env একটি মডিউল লিখেছিলাম যার সাহায্যে আপনি আপনার কমান্ডটি চালাতে পারবেন ঠিক যেমন * নিক্সে।

NODE_ENV=production node myapp/app.js

এটি NODE_ENV.cmdএমন একটি তৈরি করে কাজ করে যা NODE_ENVপরিবেশের পরিবর্তনশীল নির্ধারণ করে এবং বাকী কমান্ড এবং এর আরগগুলি সহ একটি শিশু প্রক্রিয়া তৈরি করে।

কেবল এটি ইনস্টল করুন (বিশ্বব্যাপী), এবং আপনার এনপিএম স্ক্রিপ্ট কমান্ডগুলি চালান, এটি তাদের স্বয়ংক্রিয়ভাবে কাজ করে।

npm install -g win-node-env

ঠিক আমি খুঁজছেন ছিল কি! এনপিএম স্ক্রিপ্টগুলির সাথে চালনা করতে এবং এটি এমনকি জাস্টের মতো অন্যান্য নোড ক্লাইপ সরঞ্জামগুলির সাথেও কাজ করে। সুতরাং "সেট করুন NODE_ENV = ডিবাগ & ক্লস & জেস্ট ..." "ক্লাস & NODE_ENV = ডিবাগ জেস্ট" হয়ে গেছে
জেড খোলা

9

ভিজ্যুয়াল স্টুডিও 2013 এর উইন্ডোজ 7 64-বিটে নোড.জেএস ব্যবহার করার আমার অভিজ্ঞতাটি আপনাকে ব্যবহার করা দরকার to

setx NODE_ENV development

একটি সেন্টিমিডি উইন্ডো থেকে। এবং নতুন মানটি স্বীকৃত হওয়ার জন্য আপনাকে ভিজ্যুয়াল স্টুডিও পুনরায় চালু করতে হবে।

সেট সিনট্যাক্সটি কেবলমাত্র সেমিডি উইন্ডোতে সেট করা রয়েছে তার সময়কালের জন্য স্থায়ী হয়।

নোড.জেএস-তে সাধারণ পরীক্ষা:

console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);

সেটটি ব্যবহার করার সময় এটি 'অপরিজ্ঞাপিত' প্রত্যাবর্তন করে এবং সেটেক্স ব্যবহার করে এবং ভিজ্যুয়াল স্টুডিও পুনরায় চালু করা হলে এটি 'বিকাশ' ফিরে আসবে।


cmd- পাওয়ারশেল নয়? ওহ, উইন্ডোতে আসুন, এটি একসাথে পান।
jcollum

ভিএস কোড পুনঃসূচনা সম্পর্কে আপনার মন্তব্যটি সত্যই কার্যকর ছিল!
ইউরি কোজলভ

8

নন-কমান্ড লাইন পদ্ধতিটি এখানে:

উইন্ডোজ 7 বা 10-এ, স্টার্ট মেনু অনুসন্ধান বাক্সে পরিবেশ টাইপ করুন এবং সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলগুলি সম্পাদনা করুন নির্বাচন করুন।

বিকল্পভাবে, কন্ট্রোল প্যানেল \ সিস্টেম এবং সুরক্ষা \ সিস্টেমে নেভিগেট করুন এবং উন্নত সিস্টেম সেটিংসে ক্লিক করুন

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

সিস্টেম ডায়ালগ বক্স

এনভায়রনমেন্ট ভেরিয়েবলস ডায়ালগ বক্স খুলবে।

পরিবেশ পরিবর্তনশীল ডায়ালগ বক্স

সিস্টেম ভেরিয়েবলের নীচে নীচে, নতুন নির্বাচন করুন ... এটি নতুন সিস্টেমের পরিবর্তনশীল ডায়ালগ বাক্সটি খুলবে।

এখানে চিত্র বর্ণনা লিখুন

ভেরিয়েবলের নাম এবং মান লিখুন এবং ঠিক আছে ক্লিক করুন।

প্রসেস.এনভিতে নতুন ভেরিয়েবলটি উপলব্ধ হওয়ার জন্য আপনাকে সমস্ত সেমিডি প্রম্পটগুলি বন্ধ করতে হবে এবং আপনার সার্ভারটি পুনরায় চালু করতে হবে। এটি এখনও প্রদর্শিত না হলে আপনার মেশিনটি পুনরায় চালু করুন।


2
ধন্যবাদ! আমি এই সব করেছি কিন্তু সার্ভার পুনরায় চালু না করা পর্যন্ত এটি কাজ করে না working
মার্সেল ল্যামোথ

7

কেবল স্পষ্ট করার জন্য, এবং অন্য কারও জন্য যারা চুল কাটাতে পারে ...

আপনি ব্যবহার করে থাকেন Windows এ Git ব্যাশ , set node_env=production&& node whatever.js কাজ বলে মনে হচ্ছে না । পরিবর্তে, নেটিভ সেমিডি ব্যবহার করুন। তারপরে, set node_env=production&& node whatever.jsপ্রত্যাশা অনুযায়ী কাজগুলি ব্যবহার করে।

আমার ব্যবহারের কেস:

আমি উইন্ডোজে বিকাশ করি কারণ আমার কর্মপ্রবাহ অনেক দ্রুত, তবে আমার অ্যাপ্লিকেশনটির বিকাশ-নির্দিষ্ট মিডলওয়্যার উত্পাদন পরিবেশে ফায়ার করছে না তা নিশ্চিত করা দরকার।


6

পাওয়ারশেলটিতে আপনার অ্যাপ্লিকেশনটি চালানোর জন্য (যেহেতু &&অনুমোদিত নয়):

($env:NODE_ENV="production") -and (node myapp/app.js)

নোট করুন যে সার্ভারটি যা করছে তার পাঠ্য আউটপুট চাপা পড়েছে এবং আমি নিশ্চিত নই যে এটি স্থিরযোগ্য। (@ জাসালোননের উত্তরটি প্রসারিত করা হচ্ছে))


এটি আমার পক্ষে কার্যকর হয়নি:"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
ইভানড্রো পোমাটি

4

পাওয়ারশেল টাইপ প্রথম

$env:NODE_ENV="production"

তারপরে টাইপ করুন

node fileName.js

এটি সমস্ত আউটপুট প্রদর্শন করতে নিখুঁতভাবে কাজ করবে।


2

জন্য একাধিক এনভায়রনমেন্ট ভেরিয়েবল, একটি .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:

  1. সাথে ইনস্টল করুন npm install --save dotenv-safe
  2. এটিকে আপনার কোডে অন্তর্ভুক্ত করুন (শুরুতে সেরা index.js) এবং সরাসরি process.envকমান্ডের সাহায্যে এটি ব্যবহার করুন :
require('dotenv').load()
console.log(process.env.DB_HOST)   

আপনার ভিসিএসে ফাইলটি উপেক্ষা.env করতে ভুলবেন না ।

আপনার প্রোগ্রামটি দ্রুত ব্যর্থ হয় যদি কোনও ভেরিয়েবল "সংজ্ঞায়িত" .env.exampleহয় পরিবেশের পরিবর্তনশীল হিসাবে বা ইন সেট না করে .env


.env ফাইলগুলি কেবল গোপনীয়তার জন্য সুবিধাজনক এবং কোনও প্রকল্পে নতুন লোককে বরাদ্দ করার সময় বা সেগুলিতে পরিবর্তনগুলি প্রয়োগ করার সময় সেটআপ করার সময় জটিলতার অতিরিক্ত ধাপ যুক্ত করে।
coiso

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

2

আপনি GITBASH টার্মিনাল ব্যবহার করছেন এমন ক্ষেত্রে, আপনি "set NODE_ENV=production" কী করতে পারেন তা "রফতানি টাইপ করুনNODE_ENV=production"


0

এটি কোনও পরিবর্তনশীল সেট করবে না তবে এটি অনেক ক্ষেত্রে কার্যকর use আমি এটি উত্পাদনের জন্য ব্যবহারের পরামর্শ দেব না, তবে আপনি যদি এনপিএমের সাথে খেলেন তবে ঠিক হওয়া উচিত।

npm install --production

0

আমি "&&" ছাড়াই নলকাজ চালানোর জন্য এনপিএম স্ক্রিপ্ট ব্যবহার করেছি

NODE_ENV = টেস্ট কেসগুলি এনপিএম রান বীজ-ডিবি


0

যদি NODE_ENV বা অন্য কোনও পরিবেশের ভেরিয়েবল সঠিক মান সরবরাহ না করে তবে ভিএস কোড পুনরায় চালু করুন। এটি পুনরায় আরম্ভের পরে কাজ করা উচিত।

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