节点process.env.VARIABLE_NAME返回未定义

我在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)

以下步骤可用于重现此问题:

  1. 打开诸如WebStorm之类的IDE并编写一个简单的Node.js程序:console.log(process.env.VARIABLE\u NAME)。它将按预期打印未定义,因为变量\u名称尚未定义。保持IDE运行,不要关闭它
  2. 打开环境配置文件,如.bash\u profile,并在其中添加导出变量\u NAME=mysensiteInfo
  3. 打开系统控制台并运行source.bash_profile,以便执行上述export语句。从现在起,只要打开系统控制台,VARIABLE\u NAME环境变量就存在
  4. 在系统控制台中,执行步骤1中的Node.js程序,它将打印mysensiteInfo
  5. 切换到IDE并执行Node.js程序,它将打印未定义的
  6. 重新启动IDE并执行Node.js程序,这次它将打印mysensiteInfo

发表评论