【发布时间】:2020-01-05 07:19:48
【问题描述】:
在最近的一个 nodejs 项目中,我遇到了一件很奇怪的事情:我在 .env 文件中设置了 HOSTNAME 变量,当它被包含在 .js 文件中时,HOSTNAME 的值与 .环境。 为什么?
--
情况
.env
HOSTNAME=foo.bar.com
server.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 变量名称可能会受到这种奇怪事件的影响
【问题讨论】:
-
HOSTNAME可能已经存在,现有的环境变量不会被覆盖:npmjs.com/package/… -
@RolandStarke 非常感谢您的提示; dotenv(或 nodejs)会加载一些 Windows 路径变量或类似的东西吗?