在 Node.js 中读取环境变量

IT技术 javascript node.js environment-variables
2021-02-08 13:46:24

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

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

6个回答
process.env.ENV_VARIABLE

ENV_VARIABLE您要访问的变量的名称在哪里

参见Node.js 文档process.env

值得一提的是,这在 React 应用程序中不起作用。process.env出于安全原因进行了消毒。仅以 开头的变量REACT_ENV_可用。参见:github.com/facebookincubator/create-react-app/blob/master/...
2021-03-18 13:46:24
@Mr.14 没错!是 REACT_APP_ 不是 REACT_ENV_
2021-03-24 13:46:24
请注意,这在节点进程及其子进程之外是不可见的。例如,如果您env在节点进程运行时在另一个 shell 窗口中触发,或者在节点进程退出后在同一个 shell 中触发它就不会可见
2021-03-25 13:46:24
这也适用于分配变量。 process.env.FOO = "foo";作品。
2021-04-08 13:46:24
@MarkEdington 我认为应该是 REACT_APP_
2021-04-08 13:46:24

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

例如

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

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

process.env 使您可以访问在操作系统级别设置的环境变量。这些可以通过多种方式设置,取决于您部署应用程序的位置。例如,我经常使用 NODE_ENV=development NODE_PATH=lib node server.js 运行我的本地应用程序。然后 process.env.NODE_PATH 将返回 'lib'
2021-03-12 13:46:24
使用上述 process.env 方法需要什么库?
2021-03-31 13:46:24
@user_mdaprocess.env内置在 node.js api 中。
2021-04-04 13:46:24
我只是在 process.env 上设置我想要的任何内容吗?为什么人们将它设置在那里而不是说,一个由 node.js 要求()的配置对象?
2021-04-09 13:46:24

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

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

你为什么有process.env['HOME']
2021-04-08 13:46:24

要在 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'
 });
我喜欢对必须明确检查的布尔环境变量使用“是”和“否”。这避免了许多编程语言中的问题。
2021-03-12 13:46:24

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

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

完毕。现在您可以使用process.env.ENV_NAME.

这就是我的观点:从env库中管理和加载 env 变量
2021-03-15 13:46:24
这应该是答案。我只是尝试使用process.env.MY_VAR并且在我输入 requre 语句之前不会工作。谢谢!!
2021-03-23 13:46:24
dotenv 包很有用,但问题是通过阅读 process.env.ENV_VARIABLE 来回答的。dovenv 包是关于将设置从文件加载到环境中的。
2021-03-29 13:46:24
类似于github.com/bitrise-io/envman也不是node特定的。
2021-04-01 13:46:24
您可以使用该envdir实用程序以非 node.js 特定的方式执行相同的操作
2021-04-04 13:46:24