Ympäristömuuttuja antaa tietoa ympäristöstä, jossa prosessi on käynnissä. Ne määrittävät palvelinportteja ja tietokantayhteyksiä, piilottavat arkaluontoiset tiedot, kuten API-avaimet, ja paljon muuta.

NestJS: n tapa lukea ympäristömuuttujia poikkeaa NodeJS: n tavallisesta dotenv-paketista.

NestJS-määritysmoduulin avulla voit hallita ympäristömuuttujiasi muutamassa vaiheessa.

Vaihe 1: Asenna riippuvuuksia

NestJS tarjoaa omistetun @nestjs/config paketti, joka käyttää dotenv paketti konepellin alle. Tämä nollariippuvuuspaketti lataa ympäristömuuttujat osoitteesta a .env tiedosto sisään process.env. Process.env-objekti on globaali muuttuja, joka syötetään ajon aikana sovelluksesi käyttöön.

Asenna NestJS-määrityspaketti suorittamalla:

npm asennus @nestjs/config

NestJS-määrityspaketti paljastaa konfigurointimoduulin ja konfigurointipalvelun sovellukselle. Config-moduuli määrittää .env lähetä sovellus luettavaksi. Samanaikaisesti konfigurointipalvelu paljastaa tiedot sisällä .env tiedosto sovelluksen muuhun osaan.

Vaihe 2: Luo ENV-tiedostoja

Ympäristömuuttujien tallentaminen tiedostoon mahdollistaa käyttää niitä helposti millä tahansa kielellä, eri käyttöjärjestelmissä. Voit hallita näitä versioita .env tiedostot, joten ne lisäävät projektin siirrettävyyttä ja voivat helpottaa virheenkorjausongelmia.

NestJS-lähestymistapa .env-tiedostojen luomiseen eroaa virallisesta dotenv-suosituksesta. Dotenv-dokumentaation mukaan sovellukseen ei saa luoda enempää kuin yksi .env-tiedosto. NestJS: n avulla voit luoda useita .env-tiedostoja eri nimillä.

Hyvä käytäntö on, että sinun tulee aina luoda .env-tiedostot projektisi juurihakemistoon ja sisällyttää ne omaan .gitignore tiedosto.

Ei ole erityistä tapaa luoda .env-tiedostoja – luo ja muokkaa ne tavallisella tekstieditorillasi – mutta niiden on alettava .env: llä. Esimerkiksi, .env.development.

Vaihe 3: Määritä konfigurointimoduuli

Noudata alla olevia vaiheita määrittääksesi konfigurointimoduulin maailmanlaajuisesti ja määritä .env polut:

  1. Projektisi juurimoduulissa (app.modue.ts) tiedosto, tuonti ConfigModule alkaen @nestjs/config.
  2. Lisätä ConfigModule sinun tuonti joukko ja soita forRootille menetelmä siinä.
  3. Välitä määritysobjekti forRootille menetelmällä an on maailmanlaajuinen omaisuutta totta. Tämä vaihtoehto jakaa määritykset sovelluksesi muiden moduulien kanssa, mikä tarkoittaa, että sinun ei tarvitse määrittää sitä useammin kuin kerran.
  4. Määritä omasi envFilePath määritysobjektissasi. Tämä ominaisuus voi olla joko merkkijono (jos sinulla on sellainen .env tiedosto) tai taulukko, joka sisältää kaikki tiedostosi .env tiedostot ja kertoo konfigurointimoduulille, mitä tiedostoja etsiä.
// app.module.ts
@Moduuli({
tuonti: [
ConfigModule.forRoot({
isGlobal: totta,
envFilePath: '.env-tiedostojen nimet',
}),

Vaihe 4: Config-palvelun käyttäminen ympäristömuuttujien lukemiseen

Pääset asetusarvoihin aloittamalla tuomalla ConfigService alkaen @nestjs/config. Ruiskuta se luokan rakentaja ilmoittamalla a yksityinen muuttuja ja määrittäminen ConfigService sen tyyppinä.

Esimerkiksi:

rakentaja(yksityinen kokoonpano: ConfigService) {}

Pääset muuttujaan soittamalla numeroon saada menetelmällä ConfigService sinun yksityinen muuttuja. Välitä se tarvitsemasi tietotyyppi yleisenä ja sen ympäristömuuttujan nimi, jota haluat käyttää.

Esimerkiksi:

const envVar = this.config.get<merkkijono>('ENV_VALUE');

The ConfigService etsii arvon, jonka nimi on "ENV_VALUE" ja palauttaa sen arvon.

Huomaa, että jos kaksi .env tiedostot sisältävät saman ominaisuuden nimen, ensimmäinen, joka on määritetty envFilePath tulee etusijalle.

Ympäristömuuttujien merkitys

Ympäristömuuttujat ovat olennainen osa ohjelmaa, erityisesti monimutkaisemmissa sovelluksissa. Niiden avulla voit hallita ohjelman asetuksia helposti ymmärrettävän yleisen mekanismin avulla.

Ympäristömuuttujien avulla voit hallita kaikkia konfiguroinnin näkökohtia. Eri tietokanta-asetuksista arkaluontoisiin tietoihin, kuten API-avaimiin ja valtuustietoihin, niiden avulla voit muuttaa asetuksia koskematta taustalla olevaan lähdekoodiin.