از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
خواندن متغیرهای محیط در Node.js
سرفصلهای مطلب
معرفی
آیا تا به حال فکر کرده اید که چگونه داده های حساس مانند کلیدهای API، اعتبار پایگاه داده یا تنظیمات پیکربندی را در برنامه های Node.js خود مدیریت کنید؟ پاسخ در متغیرهای محیطی نهفته است. این بایت به معرفی مختصری از متغیرهای محیطی، چرایی اهمیت آنها می پردازد و سپس نحوه خواندن آنها را در Node.js با استفاده از روش های مختلف بررسی خواهیم کرد.
متغیرهای محیطی چیست؟
متغیرهای محیطی جفتهایی نام-مقدار هستند که میتوانند بر نحوه عملکرد فرآیندهای در حال اجرا در رایانه تأثیر بگذارند. آنها در هر سیستم عاملی وجود دارند و برای در دسترس قرار دادن اطلاعات خاصی در سطح جهانی برای تمام فرآیندهای در حال اجرا استفاده می شوند. در زمینه Node.js، متغیرهای محیطی عمدتاً برای تنظیم متغیرهای سطح فرآیند که برای برنامه عمومی هستند استفاده میشوند.
console.log(process.env);
با اجرای کد بالا در Node.js یک شی حاوی متغیرهای محیطی شما خروجی می دهد. ممکن است چیزی شبیه این به نظر برسد:
{
TERM: 'xterm-256color',
SHELL: '/usr/local/bin/bash',
USER: 'username',
PATH: '...',
PWD: '/',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/home/username',
LOGNAME: 'username',
_: '/usr/local/bin/node'
}
نگاه خواهیم کرد process.env
بیشتر در ادامه این بایت.
چرا از متغیرهای محیطی استفاده کنیم؟
اما چرا باید از متغیرهای محیطی در برنامه های Node.js خود استفاده کنید؟ خوب، چند دلیل وجود دارد:
- امنیت: متغیرهای محیطی به شما امکان می دهند داده های حساس را از کد برنامه خود پنهان یا جدا کنید. این به ویژه زمانی مفید است که با گذرواژهها، کلیدهای API یا هر داده حساس دیگری که نمیخواهید در کدتان افشا شود، سروکار دارید. جدا نگه داشتن این کلیدها از کدتان به این معنی است که در مخزن Git بررسی نمی شود و سپس با همه به اشتراک گذاشته نمی شود.
از کلیدهای خود محافظت کنید! بررسی تصادفی کلیدهای دسترسی AWS در مخازن عمومی Git آنقدر رایج است که ربات هایی وجود دارند که این کلیدها را بررسی می کنند. وقتی رباتها پیدا شوند، نرمافزار استخراج رمزنگاری را در حساب AWS شما راهاندازی میکنند که احتمالاً هزاران دلار هزینه محاسباتی برای شما به همراه خواهد داشت.
-
قابل حمل بودن: با متغیرهای محیطی، می توانید برنامه خود را برای کار در محیط های مختلف پیکربندی کنید. این زمانی مفید است که شما نیاز به جابجایی بین تنظیمات مختلف برای محیط های توسعه، آزمایش و تولید – یا حتی بین سیستم عامل ها دارید!
-
راحتی در استفاده: استفاده از متغیرهای محیطی آسان است و از هر جایی در برنامه شما قابل دسترسی است. آنها یک راه ساده برای ذخیره و بازیابی تنظیمات پیکربندی ارائه می دهند و معمولاً در همه انواع نرم افزار استفاده می شوند.
نحوه خواندن متغیرهای محیطی در Node.js
دو راه اصلی برای خواندن متغیرهای محیطی در Node.js وجود دارد: استفاده از process.env
شی جهانی، و با استفاده از dotenv
مدول.
استفاده کردن process.env
را process.env
شی جهانی یک راه ساده برای دسترسی به متغیرهای محیط شما است. این به صورت جهانی در برنامه شما موجود است و برای استفاده از آن نیازی به وارد کردن ماژول اضافی ندارید.
در اینجا مثالی از نحوه خواندن یک متغیر محیطی با استفاده از آن آورده شده است process.env
:
console.log(process.env.USER);
با اجرای این کد مقدار the را به دست میدهد USER
متغیر محیطی:
'username'
با این حال، در حالی که process.env
ساده و آسان برای استفاده است، محدودیت های خود را دارد. به عنوان مثال، راهی برای بارگیری متغیرها از یک فایل ارائه نمی دهد، که باید با مشخص کردن آنها در دستوری که برنامه شما را راه اندازی می کند، آنها را تنظیم کنید. اما اگر متغیرهای زیادی برای تنظیم داشته باشید چه؟ اینجاست که dotenv
ماژول به کار می آید.
توجه داشته باشید: این یک تمرین خوب است که متغیرهای محیط سفارشی خود را با یک کلمه کلیدی خاص مرتبط با برنامه یا شرکت خود پیشوند قرار دهید. این به جلوگیری از تضادهای احتمالی با متغیرهای محیطی در سطح سیستم کمک می کند.
استفاده کردن dotenv مدول
را dotenv ماژول یک ماژول شخص ثالث است که به شما امکان می دهد متغیرهای محیط را از a بارگیری کنید .env
فایل به process.env
. این به ویژه زمانی مفید است که تعداد زیادی متغیر محیطی دارید، یا زمانی که میخواهید به راحتی بین محیطهای مختلف جابجا شوید (به عنوان مثال، توسعه، مرحله، تولید، و غیره).
در اینجا نحوه استفاده شما آمده است dotenv
برای خواندن متغیرهای محیط:
ابتدا، نصب کنید dotenv
ماژول با استفاده از npm:
$ npm install dotenv
بعد، a ایجاد کنید .env
در ریشه پروژه خود فایل کنید و چند متغیر اضافه کنید:
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
در نهایت، می توانید متغیرها را از قسمت بارگذاری کنید .env
فایل به process.env
استفاده کردن dotenv
:
require('dotenv').config();
console.log(process.env.DB_HOST);
console.log(process.env.DB_USER);
console.log(process.env.DB_PASS);
با اجرای این کد مقادیر the را خروجی می دهید DB_HOST
، DB_USER
، و DB_PASS
متغیرهای محیطی:
'localhost'
'root'
's1mpl3'
و شما آن را دارید! اکنون می دانید که چگونه متغیرهای محیطی را در Node.js با استفاده از هر دو بخوانید process.env
و dotenv
مدول.
خطاهای رایج و نحوه رفع آنها
در حالی که خواندن متغیرهای محیط در Node.js به طور کلی بسیار آسان است، و بنابراین نسبتاً بدون خطا است، ممکن است در طول مسیر با چند سکته مواجه شوید. در اینجا چند مورد رایج وجود دارد که باید به آنها توجه کنید:
-
undefined
ارزش های: اگرprocess.env.YOUR_VARIABLE
برمی گرداندundefined
، به معنی متغیر محیط استYOUR_VARIABLE
قبل از شروع فرآیند تنظیم نشده بود. مطمئن شوید که متغیر در محیط شما تنظیم و صادر شده است یا از آن بارگذاری شده است.env
فایل. یکundefined
مقدار می تواند نشانگر مشکل دیگری باشد. -
Dotenv متغیرها را بارگیری نمی کند: اگر استفاده می کنید
dotenv
و متغیرهای شما بارگذاری نشده اند، مطمئن شوید که.env
فایل در ریشه پروژه شما است و شما در حال فراخوانی آن هستیدdotenv.config()
قبل از تلاش برای دسترسی به متغیرهااگر فایل env شما بارگذاری نمی شود زیرا نام دیگری دارد، می توانید نام آن را به استاندارد تغییر دهید
.env
نام ببرید یا استفاده کنیدpath
تنظیم برای تعیین نام متفاوت:require('dotenv').config({ path: './.env-dev' })
توجه داشته باشید: هنگام استفاده از dotenv، به یاد داشته باشید که متغیرهای محیط موجود را بازنویسی نمی کند. بنابراین اگر یک متغیر محیطی در محیط خود و مقدار متفاوتی برای همان متغیر در محیط خود دارید .env
فایل، process.env
حاوی مقدار از محیط شما خواهد بود.
موارد استفاده
متغیرهای محیطی در هزاران پروژه نرم افزاری مورد استفاده قرار می گیرند و موارد استفاده زیادی دارند که در اینجا به چند مورد از آنها اشاره خواهیم کرد.
ذخیره سازی اطلاعات حساس
یک سناریو را در نظر بگیرید: شما روی پروژه ای کار می کنید که با یک پایگاه داده تعامل دارد. به طور طبیعی، شما باید اعتبار پایگاه داده را ذخیره کنید. اما، آیا این ایده خوبی است که این مقادیر را در برنامه Node.js خود کدگذاری کنید؟ جواب منفی!
ذخیره سازی اطلاعات حساس مانند اعتبار پایگاه داده، کلیدهای API یا هر داده مخفی دیگری به طور مستقیم در کد شما می تواند منجر به مشکلات امنیتی جدی شود. اگر پایگاه کد شما، مثلاً در یک مخزن GitHub، در دسترس عموم باشد، این داده ها به راحتی قابل افشای هستند.
اینجاست که متغیرهای محیطی به کار می آیند. با ذخیره اطلاعات حساس در متغیرهای محیطی، اطمینان حاصل می کنید که این داده ها در پایگاه کد شما نمایش داده نمی شوند.
توجه داشته باشید: همیشه به یاد داشته باشید که خود را اضافه کنید .env
فایل به شما .gitignore
برای جلوگیری از ردیابی آن توسط Git و نمایش آن در پلتفرم هایی مانند GitHub.
مدیریت پیکربندی
آیا تا به حال فکر کرده اید که چگونه می توانید پیکربندی های مختلف را برای محیط های توسعه، آزمایش و تولید در برنامه Node.js خود مدیریت کنید؟ متغیرهای محیطی برای نجات، دوباره!
مدیریت تنظیمات با متغیرهای محیطی یک روش معمول است. این به شما امکان می دهد بسته به محیطی که برنامه شما در آن اجرا می شود، مقادیر مختلفی را برای متغیرهای خود تعریف کنید.
به عنوان مثال، ممکن است بخواهید از یک پایگاه داده متفاوت برای توسعه و تولید استفاده کنید. مثلاً میتوانید با تنظیم یک متغیر محیطی این را مدیریت کنید DB_HOST
. در محیط توسعه شما، DB_HOST
را می توان روی URL پایگاه داده توسعه شما تنظیم کرد. به طور مشابه، در تولید، DB_HOST
می تواند به پایگاه داده تولید شما اشاره کند.
به این ترتیب می توانید به راحتی بین پیکربندی های مختلف جابجا شوید بدون اینکه هیچ کدی در برنامه خود تغییر دهید.
نتیجه
در این بایت، اهمیت متغیرهای محیطی در برنامههای Node.js را بررسی کردهایم. ما دیدهایم که چگونه میتوانند به ایمن کردن دادههای حساس و مدیریت پیکربندیهای مختلف برای محیطهای مختلف کمک کنند.
اما، متغیرهای محیطی چیزهای بیشتری از ذخیره اسرار و مدیریت تنظیمات وجود دارد. همچنین میتوان از آنها برای پرچمگذاری ویژگی، تنظیم ثابتهای سطح برنامه و موارد دیگر استفاده کرد.
منتشر شده در 1402-12-26 13:30:05