在最近的一个 nodejs 项目中,我遇到了一件很奇怪的事情:我在 .env 文件中设置了 HOSTNAME 变量,当它包含在 .js 文件中时,HOSTNAME 的值与 .env 中的不同。为什么?
--
情况
.env
HOSTNAME=foo.bar.com
服务器.js
require('dotenv').config();
console.log("Hostname: ", process.env.HOSTNAME);
控制台输出
Hostname: foo
预期的控制台输出
Hostname: foo.bar.com
--
调试
- Nodejs 应用程序安装在 windows server 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 变量名可能会受到这种奇怪事件的影响