Node.js এ পরিবেশের পরিবর্তনশীলগুলি পড়ুন


1287

নোড.জেএস কোডে পরিবেশের ভেরিয়েবলগুলি পড়ার কোনও উপায় আছে?

উদাহরণস্বরূপ পাইথনের os.environ['HOME']

উত্তর:


1879
process.env.ENV_VARIABLE

ENV_VARIABLEআপনি যে পরিবর্তনশীলটির অ্যাক্সেস করতে চান তার নাম কোথায় ।

এর জন্য নোড.জেএস ডক্সprocess.env দেখুন ।


4
মনে রাখবেন যে নোড প্রক্রিয়া এবং এর উপ-প্রসেসের বাইরে এটি দৃশ্যমান হবে না। উদাহরণস্বরূপ env, নোড প্রক্রিয়া চলমান অবস্থায় আপনি অন্য শেল উইন্ডোতে গুলি চালালে বা নোড প্রক্রিয়াটি প্রস্থান করার পরে একই শেলটিতে না থাকলে এটি দৃশ্যমান হবে না ।
মার্কো বোনাচি

17
এটি ভেরিয়েবল বরাদ্দকরণের জন্যও কাজ করে। process.env.FOO = "foo";কাজ করে।
মেয়ে

16
এটি উল্লেখ করার মতো যে এটি কোনও প্রতিক্রিয়া প্রয়োগ করে না। process.envসুরক্ষা কারণে স্যানিটাইজ করা হয়। কেবল যে পরিবর্তনগুলি শুরু হয় REACT_ENV_তা উপলব্ধ। দেখুন: github.com/facebookincubator/create-react-app/blob/master/…
মার্ক এডিংটন

7
@ মার্কইডিংটন আমার মনে হয় এটি হওয়া উচিতREACT_APP_
মিঃ 14

5
@ মিঃ 14 ঠিক আছে আপনি! এটি REACT_APP_ REACT_ENV_ নয়
মার্ক এডিংটন

133

নোড.জেএস ব্যবহার করার সময় , আপনি process.envবস্তু থেকে কী দ্বারা পরিবেশের পরিবর্তনগুলি পুনরুদ্ধার করতে পারেন :

উদাহরণ স্বরূপ

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

এখানে এমন উত্তর যা নোড.জেজে পরিবেশের ভেরিয়েবল নির্ধারণের ব্যাখ্যা দেবে


উপরোক্ত প্রক্রিয়া.এনভ পদ্ধতিটি ব্যবহার করার জন্য কোন লিবিব প্রয়োজন?
ব্যবহারকারীর_মদা

3
@ ইউজার_মদা নোড.জেএস এপিআই process.envতে অন্তর্নির্মিত।
জেসন অ্যাকসেলসন

আমি কি প্রসেস.এনভিতে যা যা চাই ঠিক সেট করি? লোকেরা কেন এটির বিপরীত হিসাবে সেট করেছেন, একটি কনফিগার অবজেক্ট যা নোড.জেএস দ্বারা () সম্পাদনা প্রয়োজন?
PDN

3
process.env আপনাকে একটি অপারেটিং সিস্টেম স্তরে পরিবেশ পরিবর্তনশীল সেটটিতে অ্যাক্সেস দেয়। এগুলি বিভিন্ন উপায়ে সেট করা যেতে পারে এবং আপনি কোথায় আপনার অ্যাপ্লিকেশন নিযুক্ত করছেন তার উপর নির্ভর করবে উদাহরণস্বরূপ, আমি প্রায়শই NODE_ENV = বিকাশ NODE_PATH = lib নোড সার্ভার.js ব্যবহার করে আমার স্থানীয় অ্যাপ চালনা করি। তারপর process.env.NODE_PATH 'liberal এর সংক্ষিপ্ত রূপ' ফিরে আসবে
NectarSoft

57

আপনি যদি আপনার নোড.জেএস প্রোগ্রামটিতে উত্পন্ন স্ট্রিং কী ব্যবহার করতে চান তবে বলুন var v = 'HOME', আপনি ব্যবহার করতে পারেন process.env[v]

অন্যথায়, process.env.VARNAMEআপনার প্রোগ্রামটিতে হার্ডকোড করতে হবে।


তুমি কেন process.env['HOME']?
AlgoRythm

35

নোড.জেএস-এ পরিবেশগত পরিবর্তনগুলি পুনরুদ্ধার করতে আপনি প্রক্রিয়া.এনভি.ভি.আর.আই.বি.এল.বি.এস ব্যবহার করতে পারেন তবে ভুলে যাবেন না যে প্রক্রিয়া.এনভি-তে একটি সম্পত্তি অর্পণ করা স্পষ্টতই মানটিকে একটি স্ট্রিতে রূপান্তর করবে।

বুলিয়ান লজিক এড়িয়ে চলুন

এমনকি আপনার .env ফাইলটি SHOULD_SEND = মিথ্যা বা SHOULD_SEND = 0 এর মতো একটি চলক নির্ধারণ করে , মানগুলি স্ট্রিংগুলিতে রূপান্তরিত হবে ( যথাক্রমে "মিথ্যা" এবং "0" ) এবং বুলিয়ান হিসাবে ব্যাখ্যা করা হবে না।

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

পরিবর্তে, আপনার সুস্পষ্ট চেক করা উচিত। আমি পেয়েছি পরিবেশের নামের উপর নির্ভর করে অনেক দীর্ঘ।

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

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

22

আপনি প্রতি প্রকল্পে আপনার পরিবেশের ভেরিয়েবলগুলি পরিচালনা করতে env প্যাকেজটি ব্যবহার করতে পারেন :

  • .envপ্রকল্প ডিরেক্টরিতে একটি ফাইল তৈরি করুন এবং আপনার ভেরিয়েবলগুলি সেখানে রাখুন।
  • আপনার অ্যাপ্লিকেশন এন্ট্রি ফাইলের শীর্ষে এই লাইনটি যুক্ত করুন:
    require('dotenv').config();

সম্পন্ন. এখন আপনি এর সাথে আপনার পরিবেশের ভেরিয়েবলগুলি অ্যাক্সেস করতে পারেন process.env.ENV_NAME


9
ডটেনভ প্যাকেজটি কার্যকর, তবে জিজ্ঞাসা করা প্রশ্নটির উত্তর প্রক্রিয়া.এনভি.এনভি_ভিআরআইএল পড়ার মাধ্যমে দেওয়া হয়। ডোভেনভ প্যাকেজটি ফাইল থেকে পরিবেশে লোডিং সেটিং সম্পর্কে।
রবার্ট প্যাটারসন

এটি আমার বক্তব্য: envলাইব্রেরি থেকে এনভ ভেরিয়েবলগুলি পরিচালনা এবং লোড করুন ।
হুই ভিও

1
envdirইউটিলিটিটি ব্যবহার করে আপনি নন-নোড.জেএস-নির্দিষ্ট উপায়ে এটি করতে পারেন ।
ক্রিস জনসন

Github.com/bitrise-io/envman এর অনুরূপ যা এটিও nodeস্পেসিফিক নয় ।
মার্কহু

1
আপনি আমার দিন তৈরি! অনেক ধন্যবাদ!
ওয়াহা

0

এগুলি .bash_profileফাইলের ব্যবহারকারী ডিরেক্টরিতে কেন ব্যবহার করবেন না , তাই আপনাকে আপনার ভেরিয়েবলগুলির সাথে কোনও ফাইলকে উত্পাদনে ঠেলাতে হবে না?

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