Štai kaip iš tikrųjų galite naudoti „Node“ aplinkos kintamuosius

Aplinkos kintamieji yra pagrindinė mazgų kūrimo dalis, tačiau kažkodėl niekada nesivarginau mokydamasi, kaip tinkamai juos naudoti.

Gal todėl, kad jie vadinami „aplinkos kintamaisiais“.

Tiesiog žodžiai „Aplinkos kintamasis“ suaktyvina „PTSD“ priminimą, kuriame bandau teisingą kelią į „Windows“ namų katalogą. Ar tai vyksta PATH, JAVA_HOME, ar abiejuose? Ar man reikia baigti kabliataškiu? KODĖL VARTOSI JAVA?

„Node“ aplinkos kintamieji gali būti visuotiniai (pvz., „Windows“), tačiau dažnai naudojami su konkrečiu procesu, kurį norite paleisti. Pvz., Jei turėjote žiniatinklio programą, galbūt turite aplinkos kintamųjų, kurie apibrėžia:

  • HTTP prievadas, kurio reikia klausytis
  • Duomenų bazės ryšio eilutė
  • JAVA_HOME ... palauk ... ne - atsiprašau. Gijimo procesas užtrunka.

Šiame kontekste aplinkos kintamieji tikrai panašesni į „Konfigūracijos nustatymus“. Pažiūrėk, kiek maloniau tai skamba?

Jei anksčiau atlikote .NET, jums gali būti žinomas kažkas panašaus į web.configfailą. Mazgų aplinkos kintamieji veikia panašiai kaip ir parametrai web.config- jie yra būdas jums perduoti informaciją, kurios nenorite koduoti.

Bet kaip tai padaryti galite naudoti šiuos kintamuosius savo node taikymo? Man buvo sunku rasti gerų išteklių tam reikalingam kiekiui „Java“ anekdotų, todėl nusprendžiau sukurti. Štai keletas skirtingų būdų, kaip galite apibrėžti ir tada skaityti aplinkos kintamuosius „Node“ programose.

Praleiskite jį terminale

Galite perduoti aplinkos kintamuosius terminale kaip „Node“ proceso dalį. Pavyzdžiui, jei naudojate „Express“ programą ir norite pereiti uoste, galite tai padaryti taip ...

PORT=65534 node bin/www

Įdomus faktas: 65535 prievadas yra didžiausia prieinama TCP / IP tinklo vertė. Iš kur aš tai žinau? Žinoma, „StackOverflow“. Kaip kas nors ką nors žino? Bet žiniatinklio programai galite pasiekti tik 65534 prievadą, nes tai aukščiausias prievadas, prie kurio „Chrome“ prisijungs. Iš kur aš tai žinau ? Nes komentaruose man sakė Liranas Talas. Turėtumėte jį sekti. Tarp mudviejų jis žino, ką daro.

Dabar, norėdami naudoti kintamąjį savo kode, naudosite process.envobjektą.

var port = process.env.PORT;

Bet tai gali tapti negražu. Jei turėtumėte ryšio eilutę, tikriausiai nenorėtumėte pradėti perduoti kelių kintamųjų terminale. Panašu, kad kaupiate konfigūracijos vertes, o kažkas, kuris jus myli, galėtų atlikti intervenciją ir tai būtų nepatogu visiems dalyvaujantiems.

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"

Tai nėra mastelis ir visi nori mastelį. Pasak kiekvieno architekto, su kuriuo kada nors buvau susitikime, „mastelio keitimas“ yra svarbesnis, nei net programa.

Taigi pažvelkime į kitą būdą: .env failai.

Naudokite .env failą

.env failai leidžia įdėti aplinkos kintamuosius į failą. Jūs tiesiog sukuriate naują failą, vadinamą .envsavo projektu, ir įklijuojate kintamuosius ten skirtingose ​​eilutėse.

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"

Norėdami perskaityti šias reikšmes, yra keletas variantų, tačiau lengviausia naudoti dotenvpaketą nuo npm.

npm install dotenv --save

Tada jums tiesiog reikalingas tas paketas jūsų projekte, kur tik norite naudoti aplinkos kintamuosius. dotenvPaketas bus pasiimti tą failą ir įkelti šiuos parametrus į mazgą.

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"); } });

PATARIMAS: netikrinkite .envfailo „Github“. Jame yra visos jūsų paslaptys, o „Github“ jums atsiųs el. Laišką ir jums tai pasakys. Nebūk kaip aš.

Gerai, puiku. Bet tai yra tam tikras skausmas. Tai turite įdėti į kiekvieną failą, kuriame norite naudoti aplinkos kintamuosius IR turite įdiegti dotenvgamybą ten, kur jums to iš tikrųjų nereikia. Nesu didelis beprasmiško kodo diegimo gerbėjas, bet, manau, aš ką tik aprašiau visą savo karjerą.

Laimei, jūs naudojate VS kodą (nes , žinoma, kad esate ), todėl turite keletą kitų galimybių.

Darbas su .env failais VS kode

Pirmiausia galite įdiegti „DotENV“ plėtinį kodui, kuris suteiks jums gražų sintaksės paryškinimą jūsų .env failuose.

„DotENV“ - „Visual Studio Marketplace“

„Visual Studio Code“ plėtinys - „dotenv“ failų sintaksės palaikymas

marketplace.visualstudio.com

„VS Code Debugger“ taip pat siūlo keletą patogesnių galimybių įkelti vertes iš .env failų, jei naudojate „VS Code Debugger“.

VS kodo paleidimo konfigūracijos

„Vode Code“ derintuvas „Node“ (jau yra, nieko nereikia diegti) palaiko .env failų įkėlimą per paleidimo konfigūracijas. Daugiau apie „Launch Configurations“ galite perskaityti čia.

Kai sukursite pagrindinę mazgo paleidimo konfigūraciją (spustelėkite ant krumpliaračio ir pasirinkite mazgas), galite atlikti vieną arba abu iš dviejų dalykų.

Pirmasis yra tai, kad jūs galite tiesiog perduoti kintamuosius paleidimo konfigūracijoje.

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

Dabar jūs žinote, ką aš žinau (ko daug nereikia, leiskite man pasakyti) ir jaučiu, kad kelyje pasiekiau savo skoningo skonio „Java“ anekdotų tikslą. Tik tuo atveju, jei to nepadariau, paliksiu jums šį.

„Java“ yra labai galingas įrankis XML paversti kamino pėdsakais

- Nežinoma

„Satire Disclaimer“: didžioji to dalis yra prastas humoro bandymas, o kai kurie - „Java“ sąskaita; kas nėra malonu, bet labai lengva. Šie anekdotai patys nerašo.