process.env 变量与 .env 配置中的值不同
process.env variables not the same value as in .env config
在最近的一个nodejs项目中,我遇到了一个很奇怪的现象:我在我的.env文件中设置了HOSTNAME变量,当它被包含在.js文件中时,HOSTNAME值与那个不同在 .env 中为什么?
--
情况
.env
HOSTNAME=foo.bar.com
server.js
require('dotenv').config();
console.log("Hostname: ", process.env.HOSTNAME);
控制台输出
Hostname: foo
预期控制台输出
Hostname: foo.bar.com
--
调试
- Nodejs 应用程序安装在 windows 服务器 2008 上,其中机器的 DNS 条目是 foo.bar.com。从 Intranet,机器甚至可以作为“http://foo”访问(无论出于何种原因)。
- 该服务器上没有其他 nodejs 应用程序 运行
- 问题只出现在 HOSTNAME 上,没有其他变量名(至少我找不到)
- 如果 HOSTNAME=localhost 并且我 运行 来自服务器浏览器的应用程序
则工作得很好
- 如果我将 HOSTNAME 重命名为 _HOSTNAME(并替换我的代码中出现的所有 HOSTNAME),效果会很好
- 如果我 运行 我的本地机器上的代码并且只有一个 .hosts 条目“127.0.0.1 foo.bar.com”
,则工作得很好
我已通过重命名为 _HOSTNAME 解决了这个问题,但我想知道为什么会发生这种情况,以及是否还有其他 .env 变量名称可能会受到这种奇怪事件的影响
dotenv
npm 库跳过主机中已经设置的变量environment.You 可以在官方文档中找到有关覆盖现有系统变量的更多信息。
https://github.com/motdotla/dotenv#what-happens-to-environment-variables-that-were-already-set
在最近的一个nodejs项目中,我遇到了一个很奇怪的现象:我在我的.env文件中设置了HOSTNAME变量,当它被包含在.js文件中时,HOSTNAME值与那个不同在 .env 中为什么?
--
情况
.env
HOSTNAME=foo.bar.com
server.js
require('dotenv').config();
console.log("Hostname: ", process.env.HOSTNAME);
控制台输出
Hostname: foo
预期控制台输出
Hostname: foo.bar.com
--
调试
- Nodejs 应用程序安装在 windows 服务器 2008 上,其中机器的 DNS 条目是 foo.bar.com。从 Intranet,机器甚至可以作为“http://foo”访问(无论出于何种原因)。
- 该服务器上没有其他 nodejs 应用程序 运行
- 问题只出现在 HOSTNAME 上,没有其他变量名(至少我找不到)
- 如果 HOSTNAME=localhost 并且我 运行 来自服务器浏览器的应用程序 则工作得很好
- 如果我将 HOSTNAME 重命名为 _HOSTNAME(并替换我的代码中出现的所有 HOSTNAME),效果会很好
- 如果我 运行 我的本地机器上的代码并且只有一个 .hosts 条目“127.0.0.1 foo.bar.com” ,则工作得很好
我已通过重命名为 _HOSTNAME 解决了这个问题,但我想知道为什么会发生这种情况,以及是否还有其他 .env 变量名称可能会受到这种奇怪事件的影响
dotenv
npm 库跳过主机中已经设置的变量environment.You 可以在官方文档中找到有关覆盖现有系统变量的更多信息。
https://github.com/motdotla/dotenv#what-happens-to-environment-variables-that-were-already-set