process.env în Node.js

Rulare și linie de comandă Toate versiunile Node.js

Obiectul cu variabilele de mediu ale procesului: configurări ca PORT, NODE_ENV sau chei de API, mereu ca șiruri.

Sintaxă
process.env.NUME
process.env.NUME = "valoare"
delete process.env.NUME

Ce face process.env

Variabilele de mediu sunt perechi nume-valoare primite de proces de la sistemul de operare sau de la terminal. Prin ele dai aplicației setări fără să le scrii în cod: portul, adresa bazei de date, modul de lucru (NODE_ENV=production).

process.env este un obiect obișnuit la citire. O variabilă care nu există dă undefined, deci poți pune o valoare implicită cu ??. La scriere, orice valoare este transformată în șir: process.env.PORT = 3000 salvează "3000". Modificările se văd doar în procesul curent și în procesele copil pornite după aceea, nu în terminal.

În terminal le setezi înaintea comenzii: PORT=8080 node server.mjs (Linux, macOS) sau citești un fișier .env cu node --env-file=.env.

Ce returnează

Un obiect cu valori de tip șir.

Exemple

Exemplul 1: Valori implicite și conversie

process.env.PORT = 8080;            // devine șirul "8080"
process.env.DEBUG = "false";

const port = Number(process.env.PORT ?? 3000);
const oras = process.env.ORAS ?? "București";
const debug = process.env.DEBUG === "true";

console.log(port, typeof process.env.PORT);
console.log(oras, debug);

delete process.env.DEBUG;
console.log("DEBUG" in process.env);

Rezultat

8080 string
București false
false

Exemplul 2: Setare din terminal

Variabila există doar pentru comanda respectivă.

// mod.mjs
const mod = process.env.NODE_ENV ?? "development";
console.log(`Rulez în modul ${mod}`);

// în terminal (Linux, macOS):
// node mod.mjs
// NODE_ENV=production node mod.mjs

Ieșire în terminal

Rulez în modul development
Rulez în modul production

Exemplul 3: Verificare la pornire

O aplicație care are nevoie de o cheie se oprește devreme, cu un mesaj clar, dacă variabila lipsește. Aici cheia este setată în cod, ca exemplul să meargă.

process.env.CHEIE_API = "abc123";

const obligatorii = ["CHEIE_API", "PORT"];
const lipsa = obligatorii.filter((nume) => !process.env[nume]);

if (lipsa.length > 0) {
  console.log("Lipsesc variabilele:", lipsa.join(", "));
}

Rezultat

Lipsesc variabilele: PORT

Greșeli frecvente

  • Scrii if (process.env.DEBUG) și modul de depanare pornește și cu DEBUG=false: orice șir nevid este adevărat. Compară cu === "true".
  • Afișezi tot process.env în jurnale: conține parole și chei. Afișează doar variabilele de care ai nevoie.
  • Pe Windows (cmd) NODE_ENV=production node app.js nu merge; folosește set NODE_ENV=production, PowerShell ($env:NODE_ENV="production") sau un fișier .env.

Comenzi înrudite

  • node --env-file: Încarcă variabilele de mediu dintr-un fișier .env în process.env, fără pachetul dotenv.
  • process.argv: Tabloul cu argumentele din linia de comandă: process.argv.slice(2) dă ce a scris utilizatorul după numele scriptului.
  • child_process.spawn: Pornește un program ca proces copil și citește ieșirea lui pe măsură ce apare (stream), fără shell.