كيفية استخدام المتغيرات المحيطة من ملف .env في node.js

كيفية استخدام المتغيرات المحيطة من ملف .env في node.js

تعد المتغيرات البيئية ضرورية لتكوين تطبيقات Node.js ، بحيث يمكنك تكييف الإعدادات لمختلف البيئات مثل التطوير والاختبار والإنتاج. على الرغم من أنه يمكنك تحديد المتغيرات البيئية مباشرة في نظامك أو محطةك ، إلا أن هناك نهجًا أنيقًا ومنظمًا لاستخدام أ .ENV ملف. باستخدام هذا الملف ، يمكنك حفظ جميع المتغيرات البيئية في موقع مركزي ، والحفاظ عليها منفصلة عن الكود الخاص بك وجعل من السهل إدارة التكوينات المختلفة.

في هذا الدليل الشامل ، نتعامل مع عالم المتغيرات البيئية في Node.js لاستكشاف دور الشعبية dotenv حزمة واكتشف كيف تستخدمه بفعالية. سنقوم أيضًا بفحص النوع الأصلي للوصول إلى المتغيرات المحيطة في Node.js 20+ باستخدام وحدات ESM (ECMASCRIPT). لنبدأ!

كيفية استخدام المتغيرات المحيطة من ملف .env في node.js

جدول المحتويات #

مقدمة #

تخيل إنشاء تطبيق node.js يجب أن يتصل بقاعدة بيانات. يجب حفظ معلومات تسجيل دخول قاعدة البيانات مثل المضيف واسم المستخدم وكلمة المرور واسم قاعدة البيانات في مكان ما. يعد إنشاء معلومات تسجيل الدخول هذه مباشرةً في الكود الخاص بك بمثابة خطر أمان ويجعل من الصعب إدارة التكوينات المختلفة لبيئات مختلفة.

هذا هو المكان الذي تنقذ فيه المتغيرات البيئية. يمكنك حفظ المعلومات السرية مثل مفاتيح API ومعلومات تسجيل قاعدة البيانات وإعدادات التكوين الأخرى كمتغيرات بيئية والحفاظ عليها منفصلة عن قاعدة التعليمات البرمجية. هذا يحسن الأمان ويسهل توفير التطبيق الخاص بك في بيئات مختلفة مع تكوينات مختلفة.

ملف .env هو ملف نصي بسيط يخزن المتغيرات البيئية الخاصة بك بتنسيق قيمة مفتاح. إنها اتفاقية واسعة النطاق في النظام البيئي Node.js لإدارة المتغيرات البيئية ، وهناك حزمة NPM شهيرة تسمى dotenv هذا ببساطة يجعل هذه المتغيرات أسهل في الاستخدام. كما أنه يساعدك على الوصول إلى جزء التكوين من التطبيق المكون من 12 عامل. يوضح عامل التكوين لتطبيق العامل المكون من 12: “يتطلب فصلًا صارمًا عن التكوين من الرمز. التكوين يختلف اختلافا كبيرا بين الحرمان ، الكود لا. “

متطلبات #

قبل أن نغمر نفسك في الكود وندرس كيفية استخدام المتغيرات المحيطة من ملف .env ، تأكد من أن لديك المتطلبات التالية:

  • Node.js 20 أو لاحقًا مثبتة: سنستخدم أحدث وظائف Node.js بحيث يكون الإصدار الحالي للإصدار الحالي ضروريًا. يمكنك التحقق من إصدار Node.js عن طريق التشغيل node --version في المحطة الخاصة بك.
  • فهم أساسي لـ Node.js و NPM: يجب أن تكون على دراية بتنفيذ البرامج النصية Node.js وتثبيت حزم NPM باستخدام هذا npm install يأمر.
  • المعرفة الأساسية بوحدات JavaScript: يتم استخدام واردات ESM في هذا الدليل. هذا هو المعيار الجديد لوحدات JavaScript ويتم دعمه في Node.js 14 وأعلى.

في القسم التالي ، ستتعلم كيفية تلقي المتغيرات البيئية باستخدام متغيرات البيئة dotenv طَرد.

استدعاء المتغيرات البيئية مع dotenv #

Dotenv هي وحدة الاعتماد الصفري ، والمتغيرات المحيطة لـ Lädt .env ملف في process.env. هذه طريقة بسيطة ومريحة لإدارة المتغيرات المحيطة ، والحفاظ عليها منفصلة عن الكود الخاصة بهم وتبسيط توفير تطبيقاتها في بيئات مختلفة.

تثبيت dotenv #

ابدأ مع dotenvيجب عليك تثبيته أولاً. يمكنك تثبيته في المحطة الخاصة بك مع الأمر التالي:

npm install dotenv

يقوم هذا الأمر بتثبيت dotenv حزمة من تسجيل NPM وأضفه إلى مشروعك package.json ملف كاعتماد. وقت كتابة هذا التقرير dotenv في الإصدار 16.4.5.

إنشاء ملف .env #

بعد تثبيتها dotenv يمكنك إنشاء حزمة .env ملف في الدليل العادي لمشروعك. يحتوي هذا الملف على جميع متغيراتك البيئية. شكل .env الملف بسيط. يمثل كل سطر متغيرًا محيطًا ، حيث يتم فصل المفتاح والقيمة بعلامة متساوية (=). على سبيل المثال:

DATABASE_NAME=quotes
DATABASE_USER=quotes_user

متغيرات بيئة التحميل #

لتحميل المتغيرات المحيطة من الخاص بك إلى .env ملف في process.envعليك أن تتصل بهم config طريقة من dotenv الوحدة النمطية. يجب أن يتم ذلك في بداية طلبك قبل تنفيذ رمز آخر. يكون المكان العام حيث يمكنك استدعاء طريقة التكوين عند نقطة إدخال التطبيق الخاص بك ، وهو عادة index.js أو app.js. على سبيل المثال:

import 'dotenv/config';

const dbName = process.env.DATABASE_NAME;
const dbUser = process.env.DATABASE_USER;
console.log(`Database name is ${dbName} and database username is ${dbUser}`);

في الكود أعلاه ، مثال dotenv/config تستدعي استدعاء الاستيراد المتغيرات المحيطة من .env ملف في process.env. ثم أضف ثوابت dbName و dbUserللحصول على المتغيرات البيئية ذات الصلة وعرضها على وحدة التحكم console.log. إذا كان تطبيقًا حقيقيًا ، مثل تطبيق express.js ، لكانوا قد استخدموا هذه المتغيرات لسحق الاتصال بقاعدة البيانات.

إذا قمت بتشغيل ما سبق أعلاه index.js ملف مع node index.js وذيل الصلة .env ملف يتم عرض الإصدار التالي:

إخراج استخدام حزمة NPM -Dotenv مع إصدار Node.js أقل من 20

إذا كنت تريد استخدام اسم ملف مختلف عن .env. يمكنك فقط استيراد dotenvوحدة مع import dotenv from 'dotenv';يمكنك استخدام العرف .env ملف (لا .env) ، يمكنك تسليم المسار إلى الملف كوسيطة إلى config طريقة مثل أدناه:

dotenv.config({ path: './.env.example' });

لاستخدام طريقة أخرى مفيدة dotenv بدون الاستيراد أو المتطلبات ، يجب تسليمها إلى أمر العقدة. على سبيل المثال لملف يسمى index-no-imports.js الذي مثل المحتوى التالي مع نفسه .env ملف:

const dbName = process.env.DATABASE_NAME;
const dbUser = process.env.DATABASE_USER;
console.log(`Database name is ${dbName} and database user is ${dbUser}`);

يمكنك الدخول في المتغيرات المحيطة عن طريق التنفيذ:

node --require dotenv/config index-no-imports.js

Dotenv لديه نظام بيئي صغير. هناك dotenvx ، يمكنك تشفير وفك تشفير متغيراتك البيئية ، وأنت dotenv-valut ل. وهي مدعومة من قبل شركات مثل Warp و COSOS و Automatization. كما أنه يحتوي على قناة على YouTube ومقطع فيديو يشرح كيفية استخدامه. هناك العديد من الأمثلة الرسمية التي تستخدم مشاريع مثل Next.js.

في القسم التالي ، ستتعرف على النوع الأصلي للوصول إلى المتغيرات المحيطة في Node.js 20+.

المتغيرات البيئية الأصلية 20+ #

بواسطة node.js 20+ هناك طريقة أصلية للتمكن من الوصول إلى المتغيرات البيئية دون وصول
يجب تثبيت حزمة NPM قدر الإمكان dotenv. من العقدة 20.6.0 واحدة من أبرز التغييرات هو الدعم المتكامل لملفات .env

استخدم ملف -ENV في Node CLI #

مع نفس .env ملف و index-no-imports.js ملف من المثال أعلاه. يمكنك استخدام المتغير المحيط من .env ملف في كل js ملف مع الأمر التالي:

node --env-file .env index-no-imports.js

يصبح:

طبعة من استخدام ملف node.js-ensv لتحميل ملف env في node.js الإصدار 20+

هذا يتوافق بالضبط مع القضية أعلاه دون الاستيراد dotenv في الملف أو في سطر الأوامر. هذا ممكن من Knot 20.6.0 لأنه تمت إضافة الدعم المتكامل لملفات .env.

يمكنك تحديث الخاص بك .env الملف وقم بتنفيذ الرمز مرة أخرى وسيقوم بتقاط التحديثات المحدثة
المتغير البيئي. حتى تتمكن من الوصول إلى المتغيرات البيئية
import.meta.env في node.js 20+. يمكنك استخدام NodeMon لإعادة تشغيل التطبيقات الخاصة بك عندما أ .js يتغير الملف أو حتى إذا أ .env يتغير الملف مع الساعات الصحيحة.

للإشارة إلى أنك ستجد امتحانات التعليمات البرمجية في مستودع GitHub هذا.

في ضوء حقيقة أن Node.js 20+ تقدم خيارًا أصليًا للوصول إلى المتغيرات البيئية منذ سبتمبر 2023 (أكثر من عام عند كتابة منشور المدونة هذا) ، قد تتساءل لماذا يجب أن تتعامل مع Dotenv؟ إنه سؤال صالح مع إجابة صالحة:
dotenv لا تزال الحزمة الأكثر شعبية للحصول على المتغيرات المحيطة من ملف .env.

مع أكثر من 45 مليون تنزيل في الأسبوع من نوفمبر 2023 ، dotenv هو اختبار kattest وحزمة واسعة في النظام البيئي node.js.

يمكنك رؤية مقارنة بين Dotenv و Knoten-envile و Dot-ENV وفقًا لاتجاهات NPM التالية:

لا تزال حزمة NPM -DTVN تحظى بشعبية كبيرة مع أكثر من 45 مليون تنزيل في الأسبوع

كما ترون ، فإن Dotenv هو الفائز الواضح مع تنزيلات أسبوعية بشكل كبير من ملف العقدة المنافس. على الرغم من أن DOT-ENV هي مكتبة مماثلة ، إلا أن التنزيلات ضئيلة. dot-env لم يتم تحديثه في السنوات الـ 11 الماضية ، بينما dotenv هو مشروع نشط للغاية على جيثب.

دبلوم #

في هذا الدليل الشامل ، تعلمت كيفية الوصول إلى المتغيرات البيئية
ملف .env في node.js. لقد درست طريقتين ، الأول مع حزمة dotenev الشهيرة والثاني مع الأم --env-file متوفر في node.js 20+. مع معرفة كلتا الطريقتين ، يمكنك الآن اتخاذ خيار جيد ، اعتمادًا على متطلبات مشروعك.

إذا كنت تعمل في مشروع جديد ، فإنني أوصي باختيار السكان الأصليين --env-file الطريقة لأنها جزء من node.js ولا تتطلب التبعية الخارجية. ومع ذلك ، إذا كنت تعمل على مشروع موجود بالفعل dotenvليست هناك حاجة للتغيير.

في النهاية ، يحقق كلاهما نفس الهدف المتمثل في الوصول إلى المتغيرات البيئية من ملف .env. أخيرًا ، يمكنك التبديل إلى النوع الأصلي للوصول إلى المتغيرات المحيطة في Node.js 20+ ، حيث إنه جزء من Core.js ولا يتطلب تبعية خارجية. هذا يجعل تطبيقك أسهل ويقلل من عدد التبعيات.

المصدر المرجعي

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *