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?

Iata cum puteti utiliza de fapt variabilele de mediu Node
OMOARA-MĂ

Î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.

1611587587 904 Iata cum puteti utiliza de fapt variabilele de mediu Node
Citatul pe tine însuți este culmea amăgirii

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.

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

1611587587 988 Iata cum puteti utiliza de fapt variabilele de mediu Node

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.

Iata cum puteti utiliza de fapt variabilele de mediu Node

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.

1611587588 768 Iata cum puteti utiliza de fapt variabilele de mediu Node

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.

1611587588 756 Iata cum puteti utiliza de fapt variabilele de mediu Node

Ș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”.

1611587589 225 Iata cum puteti utiliza de fapt variabilele de mediu Node

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”.

1611587589 374 Iata cum puteti utiliza de fapt variabilele de mediu Node

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.

1611587589 684 Iata cum puteti utiliza de fapt variabilele de mediu Node

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”.

1611587590 287 Iata cum puteti utiliza de fapt variabilele de mediu Node

Ș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.

1611587590 939 Iata cum puteti utiliza de fapt variabilele de mediu Node

Î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.