J'utilise des variables d'environnement sur mon Mac pour stocker des informations d'identification sensibles et j'essaie d'y accéder via Node. Je les ai ajoutés à mon profil d’environnement avec
export VARIABLE_NAME=mySensitiveInfo
Lorsque j'utilise echo $VARIABLE_NAME
, je reçois le bon résultat (mes informations sensibles).
Cependant, lorsque j'essaie d'accéder à cette même variable dans Node avec process.env.VARIABLE_NAME
et d'essayer de l'imprimer sur la console, je reçois un indéfini.
Les autres variables d'environnement semblent toutefois convenir. Par exemple, lorsque je console.log(process.env.FACEBOOK_CALLBACK_URL)
, il affiche la valeur correcte sur ma console. J'ai ajouté FACEBOOK_CALLBACK_URL il y a quelques jours.
Dois-je redémarrer ma machine ou autre chose? Est-ce que cela prend un certain temps avant que les variables d'environnement deviennent disponibles dans Node? La réponse la plus proche que j'ai vue sur SO est ce message , mais personne n'a pu comprendre pourquoi cela se produisait.
process.env.VARIABLE_NAME
renvoie undefined
car l'environnement d'exécution Node.js ne connaît pas encore le VARIABLE_NAME
ajouté. Pour résoudre le problème, l'environnement d'exécution Node.js (par exemple, IDE) doit redémarrer.
Les étapes suivantes peuvent être utilisées pour reproduire ce problème:
console.log(process.env.VARIABLE_NAME)
. Il imprimera undefined
comme prévu, car VARIABLE_NAME
n'est pas encore défini. Laissez le IDE en marche, ne le fermez pas..bash_profile
et ajoutez export VARIABLE_NAME=mySensitiveInfo
dans celui-ci.source .bash_profile
, de sorte que l'instruction export
ci-dessus soit exécutée. Désormais, chaque fois que la console système est ouverte, la variable d’environnement VARIABLE_NAME
existe.mySensitiveInfo
.undefined
.mySensitiveInfo
J'ai un problème tout à l'heure, et je l'utilise résolu dans la configuration de webpack
const plugins = [
new webpack.NoEmitOnErrorsPlugin(),
// after compile global will defined `process.env` this Object
new webpack.DefinePlugin({
BUILD_AT : Date.now().toString(32),
DEBUG: process.env.NODE_ENV !== 'production',
'process.env': {
'NODE_ENV': JSON.stringify(process.env.NODE_ENV || "development"),
'VARIABLE_NAME': JSON.stringify(process.env.VARIABLE_NAME)
}
})
]