繁体   English   中英

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 Server 2008上,该计算机的DNS条目为foo.bar.com。 从Intranet,甚至可以通过“ http:// foo ”访问该计算机(无论出于何种原因)。
  • 该服务器上没有其他Node.js应用程序运行
  • 问题仅出现在HOSTNAME上,没有其他变量名(至少在我所能找到的范围内)
  • 如果HOSTNAME = localhost,并且我从服务器浏览器运行该应用程序,则工作正常
  • 如果我将HOSTNAME重命名为_HOSTNAME(并且替换了我代码中所有出现的HOSTNAME),则可以正常工作
  • 如果我在本地计算机上运行代码并且只有一个.hosts条目“ 127.0.0.1 foo.bar.com”,则可以正常工作

我已经通过重命名为_HOSTNAME来解决了该问题,但是我想知道为什么会这样,以及是否还有其他.env变量名可能会受到这种奇怪情况的影响

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

https://github.com/motdotla/dotenv#what-happens-to-environment-variables-that-已经设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM