Macで環境変数を使用して機密情報を保存し、Nodeを介してそれらにアクセスしようとしています。環境プロファイルにそれらを追加しました
_export VARIABLE_NAME=mySensitiveInfo
_
_echo $VARIABLE_NAME
_を使用すると、正しい出力を受け取ります(機密情報)。
ただし、この同じ変数にNode with _process.env.VARIABLE_NAME
_でアクセスして、コンソールに出力しようとすると、未定義になります。
ただし、他の環境変数は問題ないようです。たとえば、I console.log(process.env.FACEBOOK_CALLBACK_URL)
の場合、正しい値がコンソールに出力されます。数日前にFACEBOOK_CALLBACK_URLを追加しました。
マシンなどを再起動する必要がありますか? Nodeで環境変数が使用可能になるまでに一定の時間がかかりますか? SO)で見た最も近い答えは この投稿 ですが、なぜそれが起こっているのか誰も理解できませんでした。
Node.js実行環境は新しく追加されたprocess.env.VARIABLE_NAME
をまだ知らないため、VARIABLE_NAME
はundefined
を返します。この問題を修正するには、Node.js実行環境(IDEなど)を再起動する必要があります。
次の手順を使用して、この問題を再現できます。
console.log(process.env.VARIABLE_NAME)
。 VARIABLE_NAME
はまだ定義されていないため、期待どおりundefined
を出力します。 IDEを実行したままにして、閉じないでください。.bash_profile
などの環境プロファイルを開き、export VARIABLE_NAME=mySensitiveInfo
を追加します。source .bash_profile
を実行すると、上記のexport
ステートメントが実行されます。これ以降、システムコンソールが開かれるたびに、VARIABLE_NAME
環境変数が存在します。mySensitiveInfo
が出力されます。undefined
が出力されます。mySensitiveInfo
を出力します私は今問題を抱えており、これを使用してwebpack configで解決しました
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)
}
})
]