【问题标题】:process.env variables not the same value as in .env configprocess.env 变量与 .env 配置中的值不同
【发布时间】: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 路径变量或类似的东西吗?

标签: node.js dotenv


【解决方案1】:

dotenv npm 库会跳过宿主环境中已经设置的变量。您可以在官方文档中找到更多关于覆盖现有系统变量的信息。

https://github.com/motdotla/dotenv#what-happens-to-environment-variables-that-were-already-set

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 2018-05-13
    • 1970-01-01
    • 2018-10-23
    • 2015-01-23
    • 2020-04-10
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多