Leggi le variabili di ambiente in Node.js


Risposte:


1879
process.env.ENV_VARIABLE

Dov'è ENV_VARIABLEil nome della variabile a cui si desidera accedere.

Vedi documenti Node.js perprocess.env .


4
Si noti che ciò non sarà visibile al di fuori del processo del nodo e dei suoi sottoprocessi. Ad esempio, non sarebbe visibile se si lancia envin un'altra finestra della shell mentre il processo del nodo è in esecuzione, né nella stessa shell dopo la fine del processo del nodo.
Marko Bonaci,

17
questo funziona anche per l'assegnazione di variabili. process.env.FOO = "foo";lavori.
pulcini,

16
Vale la pena ricordare che questo non funziona in un'applicazione React. process.envè sterilizzato per motivi di sicurezza. Sono disponibili solo le variabili che iniziano con REACT_ENV_. Vedi: github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington

7
@MarkEdington Penso che dovrebbe essereREACT_APP_
Mr. 14

5
@ Mr.14 Esatto! Sono REACT_APP_ non REACT_ENV_
Mark Edington il

133

Quando si utilizza Node.js , è possibile recuperare le variabili di ambiente in base alla chiave process.envdall'oggetto:

per esempio

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

Ecco la risposta che spiegherà come impostare le variabili di ambiente in node.js


quale lib è richiesta per usare il metodo process.env sopra?
user_mda

3
@user_mda process.envè integrato in api node.js.
Jason Axelson,

Devo solo impostare ciò che voglio su process.env? perché la gente lo imposta lì invece di dire, un oggetto di configurazione che è richiesto () 'ed edito da node.js?
PDN,

3
process.env ti dà accesso al set di variabili d'ambiente a livello di sistema operativo. Questi possono essere impostati in vari modi e dipenderanno da dove stai distribuendo la tua app Ad esempio, eseguo spesso la mia app locale usando NODE_ENV = sviluppo NODE_PATH = lib node server.js. Quindi process.env.NODE_PATH restituirà 'lib'
NectarSoft

57

Se si desidera utilizzare una chiave di stringa generata nel programma Node.js, ad esempio var v = 'HOME', è possibile utilizzare process.env[v].

Altrimenti, process.env.VARNAMEdeve essere hardcoded nel tuo programma.


Perché hai process.env['HOME']?
AlgoRythm,

35

Per recuperare le variabili di ambiente in Node.JS è possibile utilizzare process.env.VARIABLE_NAME , ma non dimenticare che l'assegnazione di una proprietà su process.env convertirà implicitamente il valore in una stringa.

Evita la logica booleana

Anche se il tuo file .env definisce una variabile come SHOULD_SEND = false o SHOULD_SEND = 0 , i valori verranno convertiti in stringhe ( "false" e "0" rispettivamente) e non interpretati come booleani.

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

Invece, dovresti fare controlli espliciti. Ho scoperto che a seconda del nome dell'ambiente va molto lontano.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

1
Mi piace usare "yes" e "no" per gli ambienti booleani che devono essere esplicitamente controllati. Ciò evita problemi in molti linguaggi di programmazione.
Dogweather,

22

È possibile utilizzare il pacchetto env per gestire le variabili di ambiente per progetto:

  • Crea un .envfile nella directory del progetto e inserisci tutte le tue variabili lì.
  • Aggiungi questa riga nella parte superiore del file di voce dell'applicazione:
    require('dotenv').config();

Fatto. Ora puoi accedere alle variabili di ambiente con process.env.ENV_NAME.


9
Il pacchetto dotenv è utile, ma alla domanda posta si risponde leggendo process.env.ENV_VARIABLE. Il pacchetto dovenv riguarda il caricamento delle impostazioni da un file nell'ambiente.
Robert Patterson,

Questo è il mio punto: gestire e caricare variabili env dalla envlibreria.
Huy Vo,

1
Puoi fare lo stesso in un modo non specifico di node.js usando l' envdirutilità.
Chris Johnson,

Simile a github.com/bitrise-io/envman che non è nemmeno nodespecifico.
MarkHu,

1
mi hai reso felice! Molte grazie!
Vaha,

0

Perché non usarli nella directory Users nel .bash_profilefile, quindi non è necessario inviare alcun file con le variabili alla produzione?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.