关于javascript:在Node.js中读取环境变量

Read environment variables in Node.js

是否有方法读取node.js代码中的环境变量?

比如python的os.environ['HOME']


1
process.env.ENV_VARIABLE

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

process.env见node.js文档。


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

例如

1
2
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上分配属性会将值隐式转换为字符串。

避免布尔逻辑

Even if your .env file defines a variable like SHOULD_SEND=false or SHOULD_SEND=0, the values will be converted to strings ("false" and"0" respectively) and not interpreted as booleans.

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

相反,您应该进行明确的检查。我发现依赖环境的名字有很长的路要走。

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

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

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

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


为什么不在.bash_概要文件的用户目录中使用它们,这样就不必将带有变量的任何文件推送到生产环境中。