Node keskkonnamuutujaid saate tegelikult kasutada järgmiselt

Keskkonnamuutujad on sõlme arendamise põhiosa, kuid millegipärast ei viitsinud ma kunagi nende õigesti kasutamise õppimisega tegeleda.

Võib-olla seetõttu, et neid nimetatakse keskkonnamuutujateks.

Ainuüksi sõnad „Keskkonnamuutuja” käivitavad PTSD-ga seotud tagasivaate, mille käigus üritan Windowsi Java kodukataloogi lisada õige tee. Kas see käib PATHis või JAVA_HOME'is või mõlemas? Kas ma pean selle lõpetama semikooloniga? MIKS KASUTAN JAVA-d?

Node'is võivad keskkonnamuutujad olla globaalsed (nagu Windowsis), kuid neid kasutatakse sageli konkreetse protsessiga, mida soovite käivitada. Näiteks kui teil oli veebirakendus, võivad teil olla keskkonnamuutujad, mis määratlevad:

  • HTTP-port, mida kuulata
  • Andmebaasi ühenduse string
  • JAVA_HOME ... oota ... ei - vabandust. Paranemisprotsess võtab aega.

Selles kontekstis sarnanevad keskkonnamuutujad pigem „Konfiguratsiooniseadetega“. Vaadake, kui palju toredam see kõlab?

Kui olete varem .NET-i teinud, võite olla tuttav näiteks web.configfailiga. Sõlmekeskkonna muutujad töötavad palju samamoodi nagu a seaded web.config- need võimaldavad teil edastada teavet, mida te ei soovi kõvakoodi sisestada.

Aga kuidas sa kasutada neid muutujaid oma Sõlme rakendus? Mul oli selle jaoks vajaliku hulga Java-naljadega häid ressursse raske leida, nii et otsustasin selle luua. Siin on mõned viisid, kuidas saate oma Node'i rakendustes keskkonnamuutujaid määratleda ja seejärel lugeda.

Viige see terminali

Oma sõlme protsessi osana saate terminalis edastada keskkonnamuutujaid. Näiteks kui käitasite Expressi rakendust ja soovite sadamas passida, võiksite seda teha nii

PORT=65534 node bin/www

Lõbus fakt: port 65535 on suurim saadaolev TCP / IP-võrgu väärtus. Kuidas ma seda tean? StackOverflow muidugi. Kuidas keegi midagi teab? Kuid veebirakenduse jaoks võite minna ainult porti 65534, sest see on kõrgeim port, millega Chrome ühendub. Kuidas ma seda tean ? Sest Liran Tal ütles mulle kommentaarides. Sa peaksid teda järgima. Meie kahe vahel on tema see, kes teab, mida ta teeb.

Nüüd muutuja kasutamiseks oma koodis kasutaksite process.envobjekti.

var port = process.env.PORT;

See võib aga koledaks minna. Kui teil oleks ühendusstring, siis tõenäoliselt ei tahaks terminalis mitut muutujat edastada. Tundub, et kogute konfiguratsiooniväärtusi ja keegi, kes teid armastab, võiks korraldada sekkumise ja see oleks kõigile asjaosalistele ebamugav.

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"

See ei skaala ja kõik tahavad skaalat muuta. Iga arhitekti sõnul, kellega ma olen kunagi koosolekul istunud, on skaleerimine olulisem, kui rakendus isegi töötab.

Nii et vaatame teist viisi: .env-failid.

Kasutage .env-faili

.env-failid võimaldavad teil keskkonnamuutujaid faili panna. Loote lihtsalt .envoma projektis uue faili ja lööte muutujad erinevatele ridadele.

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"

Nende väärtuste lugemiseks on paar võimalust, kuid kõige lihtsam on kasutada dotenvpaketti alates npm.

npm install dotenv --save

Siis vajate lihtsalt seda paketti oma projektis kõikjal, kus vajate keskkonnamuutujaid. dotenvPakett kiirenemist, et fail ja laadige need sätted viiakse sõlme.

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: Ärge kontrollige oma .envfaili Githubis. Selles on kõik teie saladused ja Github saadab teile meili ning ütleb teile seda. Ära ole nagu mina.

OK kena. Kuid see on omamoodi piin. Peate selle panema igasse faili, kus soovite keskkonnamuutujaid kasutada, JA peate juurutama dotenvtootmisse sinna, kus te seda tegelikult ei vaja. Ma ei ole suur mõttetu koodi kasutuselevõtu fänn, kuid vist kirjeldasin lihtsalt kogu oma karjääri.

Õnneks kasutate VS-koodi (sest loomulikult olete ), nii et teil on mõned muud võimalused.

Töö .env-failidega VS-koodis

Esiteks võite installida koodi laienduse DotENV, mis annab teile .env-failides hea süntaksi esiletõstmise.

DotENV - Visual Studio Marketplace

Visual Studio koodi laiendus - dotenv-faili süntaksitugi

marketplace.visualstudio.com

VS-koodide silur pakub ka mõningaid mugavamaid võimalusi .env-failide väärtuste laadimiseks, kui kasutate VS-koodi silurit.

VS-koodi käivitamise konfiguratsioonid

Node silur VS-koodi jaoks (juba olemas, pole vaja midagi installida) toetab .env-failide laadimist käivitamiskonfiguratsioonide kaudu. Lisateavet käivituskonfiguratsioonide kohta leiate siit.

Kui loote sõlme käivitamise põhikonfiguratsiooni (klõpsake hammasrattal ja valige sõlm), saate teha ühte või mõlemat kahest toimingust.

Esimene on see, et saate muutujad lihtsalt käivitamise konfiguratsioonis edastada.

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

Nüüd teate, mida ma tean (mida pole palju, las ma ütlen teile) ja tunnen, et olen oma eesmärgi - maitseka koguse Java-nalju - täitnud. Igaks juhuks, kui ma seda ei teinud, jätan teile selle ühe.

Java on väga võimas tööriist XML-i virnajälgedeks muutmiseks

- teadmata

Satiirikohustustest loobumine: suurem osa sellest on kehv huumorikatse ja osa sellest Java arvelt; mis pole tore, kuid on väga lihtne. Need naljad ei kirjuta ise.