Lire les variables d'environnement dans Node.js

1288

Existe-t-il un moyen de lire les variables d'environnement dans le code Node.js?

Comme par exemple celui de Python os.environ['HOME'].

Jayesh
la source

Réponses:

1879
process.env.ENV_VARIABLE

ENV_VARIABLEest le nom de la variable à laquelle vous souhaitez accéder.

Voir les documents Node.js pourprocess.env .

Jayesh
la source
4
Notez que cela ne sera pas visible en dehors du processus de nœud et de ses sous-processus. Par exemple, il ne serait pas visible si vous tirez envdans une autre fenêtre de shell pendant que le processus de noeud est en cours d'exécution, ni dans le même shell après la fin du processus de noeud.
Marko Bonaci
17
cela fonctionne également pour l'attribution de variables. process.env.FOO = "foo";travaux.
poussins
16
Il convient de mentionner que cela ne fonctionne pas dans une application React. process.envest désinfecté pour des raisons de sécurité. Seules les variables commençant par REACT_ENV_sont disponibles. Voir: github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington
7
@MarkEdington Je pense que ça devrait êtreREACT_APP_
M. 14
5
@ Mr.14 Vous avez raison! C'est REACT_APP_ pas REACT_ENV_
Mark Edington
133

Lorsque vous utilisez Node.js , vous pouvez récupérer des variables d'environnement par clé à partir de l' process.envobjet:

par exemple

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

Voici la réponse qui expliquera la définition des variables d'environnement dans node.js

Subodh Ghulaxe
la source
quelle bibliothèque est requise pour utiliser la méthode process.env ci-dessus?
user_mda
3
@user_mda process.envest intégré à l'API node.js.
Jason Axelson
Dois-je simplement définir ce que je veux sur le processus.env? pourquoi les gens le placent là plutôt que de dire, un objet de configuration qui est require () édité par node.js?
PDN
3
process.env vous donne accès à la variable d'environnement définie au niveau du système d'exploitation. Celles-ci peuvent être définies de différentes manières et dépendent de l'endroit où vous déployez votre application Par exemple, j'exécute souvent mon application locale en utilisant NODE_ENV = développement NODE_PATH = lib node server.js. Puis process.env.NODE_PATH renverra 'lib'
NectarSoft
57

Si vous souhaitez utiliser une clé de chaîne générée dans votre programme Node.js, par exemple var v = 'HOME', vous pouvez utiliser process.env[v].

Sinon, process.env.VARNAMEdoit être codé en dur dans votre programme.

user2574650
la source
Pourquoi en avez-vous process.env['HOME']?
AlgoRythm
35

Pour récupérer des variables d'environnement dans Node.JS, vous pouvez utiliser process.env.VARIABLE_NAME , mais n'oubliez pas que l'attribution d'une propriété sur process.env convertira implicitement la valeur en chaîne.

Évitez la logique booléenne

Même si votre fichier .env définit une variable comme SHOULD_SEND = false ou SHOULD_SEND = 0 , les valeurs seront converties en chaînes ( "false" et "0" respectivement) et ne seront pas interprétées comme des booléens.

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

Au lieu de cela, vous devez effectuer des vérifications explicites. J'ai trouvé que selon le nom de l'environnement, cela allait très loin.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });
Igor Litvinovich
la source
1
J'aime utiliser «oui» et «non» pour les variables env booléennes qui doivent être explicitement vérifiées. Cela évite les problèmes dans de nombreux langages de programmation.
Dogweather
22

Vous pouvez utiliser le package env pour gérer vos variables d'environnement par projet:

  • Créez un .envfichier dans le répertoire du projet et placez-y toutes vos variables.
  • Ajoutez cette ligne en haut de votre fichier d'entrée d'application:
    require('dotenv').config();

Terminé. Vous pouvez maintenant accéder à vos variables d'environnement avec process.env.ENV_NAME.

Huy Vo
la source
9
Le package dotenv est utile, mais la question posée reçoit une réponse en lisant process.env.ENV_VARIABLE. Le package dovenv concerne le chargement des paramètres d'un fichier dans l'environnement.
Robert Patterson
C'est mon point: gérer et charger des variables env à partir de la envbibliothèque.
Huy Vo
1
Vous pouvez faire de même d'une manière non spécifique à node.js à l'aide de l' envdirutilitaire.
Chris Johnson
Similaire à github.com/bitrise-io/envman qui n'est pas non plus nodespécifique.
MarkHu
1
tu as fait ma journée! Merci beaucoup!
Vaha
0

Pourquoi ne pas les utiliser dans le répertoire Users du .bash_profilefichier, vous n'avez donc pas besoin de pousser des fichiers avec vos variables en production?

Brad Vanderbush
la source