משתני סביבה הם חלק מהותי בפיתוח הצומת, אך משום מה מעולם לא טרחתי ללמוד כיצד להשתמש בהם נכון.
אולי בגלל שהם נקראים "משתני סביבה".
רק המילים "משתנה סביבה" מפעילות פלאשבק עם 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 לעקבות מחסנית- לא ידוע
הצהרת סאטירה: רוב זה ניסיון רע הומור, וחלקו על חשבון ג'אווה; וזה לא נחמד אבל קל מאוד. הבדיחות האלה לא כותבות את עצמן.