Lire les variables d'environnement dans Node.js


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 .


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


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.


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'
 });

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.


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?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.