【发布时间】:2018-03-09 05:48:24
【问题描述】:
有没有办法读取 Node.js 代码中的环境变量?
例如 Python 的 os.environ['HOME']。
【问题讨论】:
标签: javascript node.js environment-variables
有没有办法读取 Node.js 代码中的环境变量?
例如 Python 的 os.environ['HOME']。
【问题讨论】:
标签: javascript node.js environment-variables
【讨论】:
env,则它不会可见,在节点进程退出后也不在同一个 shell 中。
process.env.FOO = "foo"; 工作。
process.env 已经过消毒。只有以REACT_ENV_ 开头的变量可用。见:github.com/facebookincubator/create-react-app/blob/master/…
REACT_APP_
使用Node.js时,可以从process.env对象中按键检索环境变量:
例如
var mode = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'
【讨论】:
process.env 内置在 node.js api 中。
如果您想使用在 Node.js 程序中生成的字符串键,例如 var v = 'HOME',您可以使用
process.env[v].
否则,process.env.VARNAME 必须在您的程序中进行硬编码。
【讨论】:
process.env['HOME']?
要在 Node.JS 中检索环境变量,您可以使用 process.env.VARIABLE_NAME,但不要忘记在 process.env 上分配属性会将值隐式转换为字符串。
即使您的 .env 文件定义了像 SHOULD_SEND=false 或 SHOULD_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 访问您的环境变量。
【讨论】:
env 库管理和加载环境变量。
envdir 实用程序以非node.js 特定的方式执行相同操作。
node-specific。
process.env.MY_VAR,并且在我输入要求语句之前不会工作。谢谢!!
如果您想在执行时查看所有环境变量,只需写入一些 nodejs 文件,例如 server.js:
console.log(process.env);
【讨论】:
为什么不在 .bash_profile 文件的用户目录中使用它们,这样您就不必将任何带有变量的文件推送到生产环境中?
【讨论】:
.bash_profile,那么它将为该用户的环境设置它,但如果您在那里运行多个实例,那么您必须为此设置多个环境变量,而不是只有一个.例如。如果你设置了 PORT 变量,那么你必须让它像 PORT_1,...但是如果你通过 .env 使用它,那么你可以使用相同的代码和具有不同 PORT 号的 .env 文件。