Variabilele de mediu sunt o parte fundamentală a dezvoltării nodurilor, dar din anumite motive nu m-am deranjat niciodată să învăț cum să le folosesc în mod corespunzător.
Poate pentru că sunt numite „Variabile de mediu”.
Doar cuvintele „Variabilă de mediu” declanșează un flashback legat de PTSD în care încerc să adaug calea corectă în directorul Java Home de pe Windows. Merge în PATH sau JAVA_HOME sau ambele? Trebuie să-l închei cu un punct și virgulă? DE CE UTILIZEZ JAVA?
În Node, variabilele de mediu pot fi globale (ca pe Windows), dar sunt adesea utilizate cu un proces specific pe care doriți să îl rulați. De exemplu, dacă ați avea o aplicație web, este posibil să aveți variabile de mediu care definesc:
- Portul HTTP pe care trebuie să-l ascultați
- Șirul de conexiune la baza de date
- JAVA_HOME … așteptați … nu – îmi pare rău. Procesul de vindecare necesită timp.
În acest context, variabilele de mediu seamănă mai mult cu „Setări de configurare”. Vedeți cât de frumos sună?
Dacă ați făcut .NET înainte, este posibil să fiți familiarizați cu ceva de genul web.config
fişier. Variabilele de mediu nod funcționează la fel ca setările într-un web.config
– sunt o modalitate prin care puteți transmite informații pe care nu doriți să le codificați.
Dar ce mai faci utilizare aceste variabile în aplicația dvs. Node? Mi-a fost greu să găsesc resurse bune în acest sens cu cantitatea necesară de glume Java, așa că am decis să creez una. Iată câteva dintre diferitele moduri în care puteți defini și apoi citi variabilele de mediu în aplicațiile dvs. Node.
Conţinut
Treceți-l în terminal
Puteți trece variabile de mediu pe terminal ca parte a procesului de nod. De exemplu, dacă executați o aplicație Express și doriți să treceți în port, ați putea face acest lucru …
PORT=65534 node bin/www
Fapt distractiv: portul 65535 este cea mai mare valoare de rețea TCP / IP disponibilă. De unde știu asta? StackOverflow, desigur. De unde știe cineva ceva? Dar puteți merge la fel de mult ca portul 65534 pentru o aplicație web, deoarece acesta este cel mai mare port la care se va conecta Chrome. De unde știu acea? Pentru că mi-a spus Liran Tal în comentarii. Ar trebui să-l urmezi. Între noi, el este cel care știe ce face.
Acum, pentru a utiliza variabila în codul dvs., ați utiliza fișierul process.env
obiect.
var port = process.env.PORT;
Dar acest lucru ar putea deveni urât. Dacă ați avea un șir de conexiune, probabil că nu ați dori să începeți să treceți mai multe variabile pe terminal. S-ar părea că acumulați valori de configurare, iar cineva care vă iubește ar putea organiza o intervenție și asta ar fi incomod pentru toți cei implicați.
PORT=65534
DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
Acest lucru nu se întinde, și toată lumea vrea să scară. Potrivit fiecărui arhitect cu care am stat vreodată într-o întâlnire, „scalarea” este mai importantă decât funcționarea aplicației.
Deci, să ne uităm la un alt mod: fișierele .env.
Folosiți un fișier .env
Fișierele .env vă permit să introduceți variabilele de mediu într-un fișier. Pur și simplu creați un fișier nou numit .env
în proiectul dvs. și bateți-vă variabilele acolo pe linii diferite.
PORT=65534
DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
Pentru a citi aceste valori, există câteva opțiuni, dar cel mai ușor este să folosiți dotenv
pachet de la npm.
npm install dotenv --save
Apoi, aveți nevoie doar de acel pachet în proiectul dvs. oriunde aveți nevoie pentru a utiliza variabile de mediu. dotenv
pachetul va prelua acel fișier și va încărca acele setări în nod.
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: Nu verificați .env
fișier în Github. Conține toate secretele dvs. și Github vă va trimite un e-mail și vă va spune acest lucru. Nu fi ca mine.
OK dragut. Dar aceasta este un fel de durere. Trebuie să puneți acest lucru în fiecare fișier în care doriți să utilizați variabile de mediu ȘI trebuie să implementați dotenv
la producție acolo unde de fapt nu aveți nevoie de ea. Nu sunt un mare fan al implementării unui cod inutil, dar cred că tocmai mi-am descris întreaga carieră.
Din fericire, îl folosești Cod VS (deoarece desigur ca esti), deci aveți alte opțiuni.
Lucrul cu fișiere .env în VS Code
În primul rând, poți instalați extensia DotENV pentru cod care vă va oferi o evidențiere a sintaxei frumoasă în fișierele dvs. .env.
DotENV – Visual Studio Marketplace
Extensie pentru Visual Studio Code – Suport pentru sintaxa fișierului dotenv
marketplace.visualstudio.com
VS Code Debugger oferă, de asemenea, câteva opțiuni mai convenabile pentru încărcarea valorilor din fișierele .env dacă folosiți VS Code Debugger.
Configurații de lansare a codului VS
Depanatorul de noduri pentru codul VS (deja acolo, nu este nevoie să instalați nimic) acceptă încărcarea în fișiere .env prin configurații de lansare. Puteți citi mai multe detalii despre lansarea configurațiilor aici.
Când creați o configurație de bază pentru lansarea nodului (faceți clic pe roată și selectați nod), puteți face unul sau ambele lucruri.
Primul este că puteți trece pur și simplu variabile în configurarea lansării.
Este frumos, dar faptul că fiecare valoare trebuie să fie un șir mă deranjează puțin. Este un număr, nu un șir. JavaScript are doar 3 tipuri. Nu-mi lua unul din ei.
Există un mod mai simplu aici. Am învățat deja să iubim .env
fișiere, deci, în loc să le transmitem, putem da doar codului VS numele fișierului .env.
Și atâta timp cât începem procesul de la VS Code, fișierele variabilelor de mediu sunt încărcate. Nu trebuie să mutăm numerele în șiruri și nu implementăm cod inutil în producție. Ei bine, cel puțin nu ești.
Începând cu NPM în loc de Node
S-ar putea să fi ajuns până aici și să fi gândit: „Burke, nu alerg niciodată node
orice. Este întotdeauna un script npm de genul npm start
”.
În acest caz, puteți utiliza în continuare configurările de lansare a codului VS. În loc să utilizați un proces standard de lansare a nodului, adăugați o configurare care este o sarcină „Lansare prin NPM”.
Acum puteți adăuga înapoi în envFile
aliniază și modifică runtimeArgs
astfel încât să lanseze scriptul corect. Aceasta este obișnuit ceva de genul „start” sau „debug”.
Rețineți că trebuie să adăugați fișierul --inspect
semnalizați scriptul dvs. npm, astfel încât codul VS să poată atașa depanatorul. În caz contrar, sarcina se va lansa, dar depanatorul de coduri VS va expira ca mine încercând să obțin o întâlnire în liceu.
Variabile de mediu de producție
Până acum ne-am uitat la modul de definire a variabilelor pentru dezvoltare. Probabil că nu veți utiliza fișiere .env în producție, iar configurațiile de lansare a codului VS nu vor fi foarte utile pe un server.
În producție, variabilele vor fi definite, totuși platforma de alegere vă permite să faceți acest lucru. În cazul Azure, există 3 moduri diferite de a defini și gestiona variabilele de mediu.
Prima modalitate este de a utiliza CLI Azure.
az webapp config appsettings set -g MyResourceGroup -n MyApp --settings PORT=65534
Ceea ce funcționează, dar, ew.
O altă modalitate este prin portalul web Azure. Nu folosesc întotdeauna un portal web, dar atunci când o fac, este să setez variabile de mediu.
În cazul Azure, acestea sunt denumite „Setări aplicație”.
Și din moment ce utilizați codul VS, puteți instala extensia Serviciului aplicației și puteți gestiona toate setările aplicației chiar de la editor.
Îmi place să nu trebuiască să părăsesc VS Code pentru a face ceva. Aș scrie e-mailuri în VS Code dacă aș putea.
AȘTEPTAȚI UN MINUT!
markdown-mail – Visual Studio Marketplace
Extensie pentru Visual Studio Code – Utilizarea marcajului pentru a scrie e-mailul și a trimite!
marketplace.visualstudio.com
Acum știți
Acum știi ce știu (ceea ce nu este foarte mult, permiteți-mi să vă spun) și simt că mi-am atins obiectivul de a oferi o cantitate plăcută de glume Java pe parcurs. În caz că nu am făcut-o, te las cu asta.
Java este un instrument foarte puternic pentru transformarea XML în urmele stivei
– Necunoscut
Renunțarea la satiră: cea mai mare parte este o încercare slabă de umor, iar unele dintre ele în detrimentul Java; ceea ce nu este frumos, dar este foarte ușor. Aceste glume nu se scriu singure.
#Iată #cum #puteți #utiliza #fapt #variabilele #mediu #Node
Iată cum puteți utiliza de fapt variabilele de mediu Node