Umgebungsvariablen in Node.js lesen


Antworten:


1879
process.env.ENV_VARIABLE

Wo ENV_VARIABLEist der Name der Variablen, auf die Sie zugreifen möchten?

Siehe Node.js-Dokumente fürprocess.env .


4
Beachten Sie, dass dies außerhalb des Knotenprozesses und seiner Unterprozesse nicht sichtbar ist. Zum Beispiel wäre es nicht sichtbar, wenn Sie envin einem anderen Shell-Fenster feuern, während der Knotenprozess ausgeführt wird, oder in derselben Shell, nachdem der Knotenprozess beendet wurde.
Marko Bonaci

17
Dies funktioniert auch zum Zuweisen von Variablen. process.env.FOO = "foo";funktioniert.
Küken

16
Es ist erwähnenswert, dass dies in einer React-Anwendung nicht funktioniert. process.envwird aus Sicherheitsgründen bereinigt. Es sind nur Variablen REACT_ENV_verfügbar , die mit beginnen . Siehe: github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington

7
@ MarkEdington Ich denke, es sollte seinREACT_APP_
Mr. 14

5
@ Mr.14 Richtig du bist! Es ist REACT_APP_ nicht REACT_ENV_
Mark Edington

133

Bei Verwendung von Node.js können Sie Umgebungsvariablen per Schlüssel aus dem process.envObjekt abrufen :

zum Beispiel

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

Hier ist die Antwort, die das Festlegen von Umgebungsvariablen in node.js erklärt


Welche Bibliothek ist erforderlich, um die obige process.env-Methode zu verwenden?
user_mda

3
@user_mda process.envist in die API von node.js integriert.
Jason Axelson

Setze ich einfach alles, was ich will, auf process.env? Warum setzen die Leute es dort, anstatt zu sagen, ein Konfigurationsobjekt, das von node.js benötigt () wird?
PDN

3
Mit process.env können Sie auf Umgebungsvariablen zugreifen, die auf Betriebssystemebene festgelegt wurden. Diese können auf verschiedene Arten festgelegt werden und hängen davon ab, wo Sie Ihre App bereitstellen. Beispielsweise führe ich meine lokale App häufig mit NODE_ENV = development NODE_PATH = lib node server.js aus. Dann gibt
process.env.NODE_PATH

57

Wenn Sie beispielsweise einen in Ihrem Node.js-Programm generierten Zeichenfolgenschlüssel verwenden möchten, var v = 'HOME'können Sie diesen verwenden process.env[v].

Andernfalls process.env.VARNAMEmuss in Ihrem Programm fest codiert werden.


Warum haben Sie process.env['HOME']?
AlgoRythm

35

Um Umgebungsvariablen in Node.JS abrufen Sie verwenden können process.env.VARIABLE_NAME , aber nicht vergessen , dass eine Eigenschaft auf process.env Zuweisung implizit den Wert in eine Zeichenfolge konvertieren.

Vermeiden Sie boolesche Logik

Selbst wenn Ihre .env-Datei eine Variable wie SHOULD_SEND = false oder SHOULD_SEND = 0 definiert , werden die Werte in Zeichenfolgen ( "false" bzw. "0" ) konvertiert und nicht als Boolesche Werte interpretiert.

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

Stattdessen sollten Sie explizite Überprüfungen durchführen. Ich habe festgestellt, dass je nach Umgebungsname ein langer Weg geht.

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

1
Ich verwende gerne 'yes' und 'no' für boolesche env-Variablen, die explizit überprüft werden müssen. Dies vermeidet Probleme in vielen Programmiersprachen.
Dogweather

22

Mit dem env- Paket können Sie Ihre Umgebungsvariablen pro Projekt verwalten:

  • Erstellen Sie eine .envDatei unter dem Projektverzeichnis und legen Sie alle Ihre Variablen dort ab.
  • Fügen Sie diese Zeile oben in Ihre Anwendungseintragsdatei ein:
    require('dotenv').config();

Erledigt. Jetzt können Sie mit auf Ihre Umgebungsvariablen zugreifen process.env.ENV_NAME.


9
Das dotenv-Paket ist nützlich, aber die gestellte Frage wird durch Lesen von process.env.ENV_VARIABLE beantwortet. Im dovenv-Paket geht es darum, Einstellungen aus einer Datei in die Umgebung zu laden.
Robert Patterson

Das ist mein Punkt: Verwalten und Laden von env-Variablen aus der envBibliothek.
Huy Vo

1
Sie können dasselbe mit dem envdirDienstprogramm auf eine nicht node.js-spezifische Weise tun .
Chris Johnson

Ähnlich wie bei github.com/bitrise-io/envman, das auch nicht nodespezifisch ist.
MarkHu

1
du hast meinen Tag gerettet! Vielen Dank!
Vaha

0

Warum verwenden Sie sie nicht im Benutzerverzeichnis der .bash_profileDatei, damit Sie keine Dateien mit Ihren Variablen in die Produktion verschieben müssen?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.