حتما در هنگام جست و جو، خواندن کتاب و یا گذراندن دوره های آموزشی Node Js به کلمه process.env برخورد کرده اید. اما این کلمه چیست و چه کاربردی دارد؟
پکیج dotenv پکیجی است که می توانید با آن متغیر های محیطی خورد را در محیط های Node Js کنترل نمایید. با نصب این پکیج یک فایل .env به پروژه شما اضافه می شود که در واقع یک shell هست و کتابخانه ای از المان های محیطی را برای شما ذخیره می کند.
برای نصب dotenv از این کد استفاده کنید:
npm install dotenv
پس از نصب این پکیج، می توانید آن را از طریق یک IDE یا نرم افزار کد نویسی باز کنید. نکته قابل توجه راجع به این فایل آن است که متغیر محیطی شما باید بر اساس این فرمت باشد : VARIABLE_NAME که با آندرلاین از هم جدا شده( در صورت وجود فاصله) و با حروف بزرگ می باشد.
نکته 1 )یعنی فرضا اگر می خواهید Message Style را برای یک محیط ذخیره کنید باید به این گونه متغیر محیطی خود را تعریف کنید : MESSAGE_STYLE
نکته 2 )نکته دیگر این است ارزش یا value ای که به این متغیر محیطی می دهید به صورت پیش فرض string خواهد بود و نیازی به گذاشتن آن میان کالن و سمی کالن نخواهد بود(تاکیید می کنم زمانی که در فایل .env کار می کنید). برای مثال فرض کنید می خواهیم به متغیر MESSAGE_STYLE ارزش uppercase بدهیم.در این صورت باید بنویسیم:
MESSAGE_STYLE=uppercase
نکته 3 ) به دلیل اینکه این ارزش به صورت string شناخته می شود می بایست از هرگونه ایجاد فضای خالی بپرهیزیم و بر خلاف دیگر محیط های جاوا اسکریپت که اغلب استفاده از فضای خالی معنایی ندارد، اینجا بسیار تاثیر گذار است.
نکته 4 ) در فضای اپلیکیشن که می خواهیم از این متغیر محیطی استفاده کنیم، می بایست از این فرمت بهره ببریم: process.env.VARIABLE_NAME برای مثال : process.env.MESSAGE_STYLE
نکته 5 ) برای استفاده از ارزش MESSAGE_STYLE که در اینجا uppercase گذاشتیم(برای مثال خودمان) حواستان باشد که حتما از === استفاده کنید ، چرا که به صورت string این ارزش وارد فایل اپلیکیشن شما می شود و باید دقیق ترین حالت ممکن بررسی شود.
نکته 6 ) برای دریافت ارزش ست شده در محیط اپ حتما می بایست کلمه تعیین شده میان کالن '' یا سمی کالن "" آورده شود.
برای مثال:
if(process.env.MESSAGE_STYLE === "uppercase"){
do something
}
با توجه به عدم وجود مطلبی در باره dotenv در فضای وب فارسی، امیدوارم به دردتون خورده باشه ین مطلب.