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 cuDEBUG=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.jsnu merge; foloseșteset 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.