כך תוכל להשתמש בפועל במשתני סביבת Node

משתני סביבה הם חלק מהותי בפיתוח הצומת, אך משום מה מעולם לא טרחתי ללמוד כיצד להשתמש בהם נכון.

אולי בגלל שהם נקראים "משתני סביבה".

רק המילים "משתנה סביבה" מפעילות פלאשבק עם PTSD ובו אני מנסה להוסיף את הנתיב הנכון לספריית Java הבית ב- Windows. האם זה נכנס ל- PATH או ל- JAVA_HOME או לשניהם? האם עלי לסיים אותו בנקודה-פסיק? מדוע אני משתמש בג'אווה?

ב- Node, משתני הסביבה יכולים להיות גלובליים (כמו ב- Windows), אך הם משמשים לעתים קרובות עם תהליך ספציפי שברצונך להריץ. לדוגמה, אם הייתה לך יישום אינטרנט, יתכן שיש לך משתני סביבה המגדירים:

  • יציאת ה- HTTP להאזנה
  • מחרוזת החיבור למסד הנתונים
  • ה- JAVA_HOME ... חכה ... לא - סליחה. תהליך הריפוי לוקח זמן.

בהקשר זה, משתני הסביבה דומים יותר ל"הגדרות תצורה ". לראות כמה יותר נחמד זה נשמע?

אם ביצעת את .NET בעבר, ייתכן שאתה מכיר משהו כמו web.configקובץ. משתני סביבת הצומת עובדים באותה המידה כמו ההגדרות ב- a web.config- הם דרך עבורך להעביר מידע שאינך רוצה להקשיח.

אך כיצד ניתן להשתמש במשתנים אלה ביישום הצומת שלך? היה לי קשה למצוא משאבים טובים בנושא זה עם הכמות הנדרשת של בדיחות ג'אווה, אז החלטתי ליצור אחת. להלן כמה מהדרכים השונות בהן ניתן להגדיר ולאחר מכן לקרוא משתני סביבה ביישומי הצומת שלך.

העבירו אותו בטרמינל

אתה יכול להעביר משתנים סביבתיים במסוף כחלק מתהליך הצומת שלך. למשל, אם היית מפעיל אפליקציית אקספרס ורצית לעבור בנמל, אתה יכול לעשות את זה ככה ...

PORT=65534 node bin/www

עובדה מהנה: יציאה 65535 היא ערך רשת ה- TCP / IP הגדול ביותר שיש. איך אני יודע את זה? StackOverflow כמובן. איך מישהו יודע משהו? אבל אתה יכול להגיע רק ליציאה 65534 לאפליקציית אינטרנט כי זה היציאה הגבוהה ביותר ש- Chrome יתחבר אליה. איך אני יודע את זה? כי לירן טל אמר לי בתגובות. אתה צריך לעקוב אחריו. בין שנינו הוא זה שיודע מה הוא עושה.

עכשיו כדי להשתמש במשתנה בקוד שלך, היית משתמש process.envבאובייקט.

var port = process.env.PORT;

אבל זה יכול להיות מכוער. אם היה לך מחרוזת חיבור, סביר להניח שלא תרצה להתחיל להעביר מספר משתנים במסוף. זה נראה כאילו אתה אוגר ערכי תצורה, ומי שאוהב אותך יכול לבצע התערבות וזה יהיה מביך עבור כל המעורבים.

PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9V[email protected]react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"

זה לא מתרחש, וכולם רוצים להתמקד. לפי כל אדריכל שישבתי איתו בפגישה, "קנה המידה" חשוב יותר מכפי שהאפליקציה אפילו עובדת.

אז בואו נסתכל על דרך אחרת: קבצי env.

השתמש בקובץ .env

קבצי env מאפשרים לך להכניס את משתני הסביבה בתוך קובץ. אתה פשוט יוצר קובץ חדש שנקרא .envבפרויקט שלך ומטיח בו את המשתנים בקווים שונים.

PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9V[email protected]react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"

כדי לקרוא ערכים אלה, ישנן כמה אפשרויות, אך הקלה ביותר היא להשתמש dotenvבחבילה מ- npm.

npm install dotenv --save

אז אתה פשוט דורש את החבילה בפרויקט שלך בכל מקום שאתה צריך להשתמש במשתני סביבה. dotenvהחבילה תאסוף כי קובץ ולטעון הגדרות אלה לתוך הצומת.

Use dotenv to read .env vars into Node require('dotenv').config(); var MongoClient = require('mongodb').MongoClient; // Reference .env vars off of the process.env object MongoClient.connect(process.env.DB_CONN, function(err, db) { if(!err) { console.log("We are connected"); } });

PROTIP: אל תבדוק את .envהקובץ שלך ב- Github. יש בו את כל הסודות שלך וגיתוב ישלח לך דוא"ל ויגיד לך את זה. אל תהיה כמוני.

נחמד בסדר. אבל זה סוג של כאב. אתה צריך לשים את זה בכל קובץ אחד שבו אתה רוצה להשתמש במשתני סביבה ואתה צריך לפרוס את dotenvהייצור שבו אתה לא באמת צריך את זה. אני לא חובב ענק של פריסת קוד חסר טעם, אבל אני מניח שתיארתי פשוט את כל הקריירה שלי.

למרבה המזל, אתה משתמש בקוד VS (כי כמובן שאתה כן ), כך שיש לך כמה אפשרויות אחרות.

עבודה עם קבצי .env בקוד VS

ראשית, באפשרותך להתקין את סיומת DotENV לקוד אשר תיתן לך הדגשת תחביר יפה בקבצי ה- env ​​שלך.

DotENV - Visual Studio Marketplace

סיומת לקוד Visual Studio - תמיכה בתחביר של קובץ dotenv

marketplace.visualstudio.com

ה- Code Code Debugger מציע גם כמה אפשרויות נוחות יותר לטעינת ערכים מקבצי .env אם אתה משתמש ב- Debugger Code VS.

תצורות הפעלת קוד VS

הבאגים של הצמתים עבור קוד VS (כבר שם, אין צורך להתקין דבר) תומך בטעינה בקבצי .env באמצעות תצורות הפעלה. תוכל לקרוא עוד על תצורות הפעלה כאן.

כאשר אתה יוצר תצורה בסיסית של שיגור הצמתים (לחץ על גלגל השיניים ובחר בצומת), אתה יכול לעשות אחד או שני הדברים.

הראשון הוא שאתה יכול פשוט להעביר משתנים בתצורת ההשקה.

This is nice, but the fact that every value has to be a string bothers me a bit. It’s a number, not a string. JavaScript only has, like, 3 types. Don’t take one of them away from me.

There is a simpler way here. We’ve already learned to love .env files, so instead of passing them, we can just give VS Code the name of the .env file.

And as long as we are starting our process from VS Code, environment variables files are loaded in. We don’t have to mutilate numbers into strings and we aren’t deploying worthless code into production. Well, at least you aren’t.

Starting with NPM instead of Node

You might have gotten this far and thought, “Burke, I never ever run node anything. It’s always an npm script like npm start”.

In this case you can still use VS Code Launch configs. Instead of using a standard Node Launch process, you add a config that is a “Launch Via NPM” task.

Now you can add back in your envFile line and tweak the runtimeArgs so that they launch the correct script. This is usually something like “start” or “debug”.

Note that you have to add the --inspect flag to your npm script so that VS Code can attach the debugger. Otherwise the task will launch, but the VS Code debugger will time out like me trying to get a date in high school.

Production environment variables

So far we’ve looked at how to define variables for development. You likely won’t use .env files in production, and VS Code Launch Configurations aren’t going to be super helpful on a server.

In production, variables will be defined however your platform of choice allows you to do so. In the case of Azure, there are 3 different ways to define and manage environment variables.

The first way is to use the Azure CLI.

az webapp config appsettings set -g MyResourceGroup -n MyApp --settings PORT=65534

Which works, but, ew.

Another way is via the Azure web portal. I don’t always use a web portal, but when I do, it’s to set environment variables.

In the case of Azure, these are called “Application Settings”.

And since you are using VS Code, you can install the App Service extension and manage all the App Settings right from the editor.

I love not having to leave VS Code to do anything. I would write emails in VS Code if I could.

WAIT A MINUTE!

markdown-mail - Visual Studio Marketplace

Extension for Visual Studio Code - Using markdown to write your email and send!

marketplace.visualstudio.com

Now you know

עכשיו אתה יודע מה אני יודע (שזה לא הרבה, תן לי לספר לך) ואני מרגיש שהגשמתי את המטרה שלי בכמות טעימה של בדיחות ג'אווה בדרך. רק למקרה שלא עשיתי זאת, אשאיר אותך עם זה.

ג'אווה הוא כלי חזק מאוד להפיכת XML לעקבות מחסנית

- לא ידוע

הצהרת סאטירה: רוב זה ניסיון רע הומור, וחלקו על חשבון ג'אווה; וזה לא נחמד אבל קל מאוד. הבדיחות האלה לא כותבות את עצמן.