读取 Node.js 中的环境变量

有没有办法在 Node.js 代码中读取环境变量?

例如,例如 Python 的os.environ['HOME']

答案

process.env.ENV_VARIABLE

其中ENV_VARIABLE是您要访问的变量的名称。

有关process.env请参见Node.js 文档

使用Node.js 时 ,可以通过键从process.env对象中检索环境变量:

例如

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

这是解释在 node.js 中设置环境变量的答案

如果要使用在 Node.js 程序中生成的字符串键(例如var v = 'HOME' ,则可以使用process.env[v]

否则,必须在程序中对process.env.VARNAME进行硬编码。

要在 Node.JS 中检索环境变量,可以使用process.env.VARIABLE_NAME ,但不要忘记在 process.env 上分配属性会将其隐式转换为字符串。

避免布尔逻辑

即使您的. env 文件定义了SHOULD_SEND = falseSHOULD_SEND = 0 之类的变量,这些值也将转换为字符串 (分别为“false” 和 “0” ),并且不会解释为布尔值。

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

相反,您应该进行显式检查。我发现,取决于环境名称会走很长一段路。

db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

您可以使用env包来管理每个项目的环境变量:

  • 在项目目录下创建一个.env文件,并将所有变量放在此处。
  • 将此行添加到应用程序条目文件的顶部:
    require('dotenv').config();

做完了现在,您可以使用process.env.ENV_NAME访问环境变量。

为什么不在.bash_profile文件的 Users 目录中使用它们,这样就不必将任何带有变量的文件推入生产环境了?