在Node.js中读取环境变量

Jay*_*esh 1240 javascript environment-variables node.js

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

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

Jay*_*esh 1829

process.env.ENV_VARIABLE
Run Code Online (Sandbox Code Playgroud)

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

请参阅Node.js文档process.env.

  • 这也适用于分配变量.`process.env.FOO ="foo";`有效. (17认同)
  • 值得一提的是,这在React应用程序中不起作用.出于安全原因,`process.env`已经过消毒.只有以"REACT_ENV_"开头的变量可用.请参阅:https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-custom-environment-variables (15认同)
  • @MarkEdington我认为它应该是`REACT_APP_` (6认同)
  • @ Mr.14你是对的!这是REACT_APP_而不是REACT_ENV_ (5认同)
  • 请注意,这在节点进程及其子进程外部不可见.例如,如果在节点进程运行时在另一个shell窗口中触发`env`,在节点进程退出后也不在同一个shell中,它将不可见. (4认同)

Sub*_*axe 131

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

例如

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'
Run Code Online (Sandbox Code Playgroud)

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

  • @user_mda`process.env`内置于node.js api中. (3认同)
  • process.env允许您访问在操作系统级别设置的环境变量.这些可以通过各种方式设置,具体取决于您部署应用程序的位置.例如,我经常使用NODE_ENV = development NODE_PATH = lib node server.js运行本地应用程序.然后process.env.NODE_PATH将返回'lib' (3认同)

小智 54

如果你想使用在Node.js程序中生成的字符串密钥,比如说var v = 'HOME',你可以使用 process.env[v].

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


Igo*_*ich 27

要在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");
}
Run Code Online (Sandbox Code Playgroud)

相反,你应该做出明确的检查.我发现取决于环境名称还有很长的路要走.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢对必须明确检查的布尔环境变量使用“是”和“否”。这避免了许多编程语言中的问题。 (2认同)

Huy*_* Vo 19

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

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

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

  • dotenv包很有用,但是问题是通过阅读process.env.ENV_VARIABLE来回答的.dovenv包的全部内容是将文件加载到环境中. (8认同)
  • 这应该是答案。我只是尝试使用“process.env.MY_VAR”,并且在输入所需语句之前无法工作。谢谢!! (2认同)

Sah*_*mar 14

使用 process.env。如果 Home 是您的环境变量名称,请尝试以下操作:

const HOME = process.env.HOME;
Run Code Online (Sandbox Code Playgroud)

或者

const { HOME } = process.env;
Run Code Online (Sandbox Code Playgroud)


Jua*_*dez 6

如果您想查看执行时的所有环境变量,只需在某些 Node.js 文件中写入,例如server.js:

console.log(process.env);