我在mac上使用环境变量来存储一些敏感凭据,并尝试通过节点访问它们。我将它们添加到我的环境配置文件中
导出变量\u NAME=mysensiteInfo
当我使用echo$VARIABLE\u NAME
时,我收到了正确的输出(我的敏感信息)
但是,当我试图使用process.env.variable\u NAME
访问节点中的同一变量并尝试在控制台上打印出来时,我得到了一个未定义的变量
不过,其他环境变量似乎没有问题。例如,当我console.log(process.env.FACEBOOK\u CALLBACK\u URL)
时,它会将正确的值打印到我的控制台。几天前我添加了FACEBOOK\u CALLBACK\u URL
我必须重新启动我的机器吗?环境变量在节点中可用需要一定的时间吗?我在SO上看到的最接近的答案是这篇文章,但是没有人能够弄清楚为什么会发生这种情况
process.env.VARIABLE\u NAME
返回未定义的
,因为Node.js执行环境还不知道新添加的VARIABLE\u NAME
。要解决此问题,需要重新启动Node.js执行环境(例如IDE)
以下步骤可用于重现此问题:
- 打开诸如WebStorm之类的IDE并编写一个简单的Node.js程序:
console.log(process.env.VARIABLE\u NAME)
。它将按预期打印未定义
,因为变量\u名称
尚未定义。保持IDE运行,不要关闭它 - 打开环境配置文件,如
.bash\u profile
,并在其中添加导出变量\u NAME=mysensiteInfo
- 打开系统控制台并运行
source.bash_profile
,以便执行上述export
语句。从现在起,只要打开系统控制台,VARIABLE\u NAME
环境变量就存在 - 在系统控制台中,执行步骤1中的Node.js程序,它将打印
mysensiteInfo
- 切换到IDE并执行Node.js程序,它将打印
未定义的
- 重新启动IDE并执行Node.js程序,这次它将打印
mysensiteInfo