为什么 process.env.username 会准备好计算机主机名(在 Windows 10 中),而不是 config.env 文件中定义的键值对

Why process.env.username readys the computer hostname (in Windows 10), instead of the key-value pair defined in config.env file

提问人:elysium 提问时间:10/18/2023 最后编辑:Communityelysium 更新时间:11/1/2023 访问量:57

问:

我在文件中定义了用户名和密码,并尝试使用 dotenv 包进行检索。config.env

当我尝试检索时,它会获取主机名。无论我定义的是所有小写字母还是大写字母;它返回计算机主机名。username

是否与一些变量名称冲突有关,并且根据设计,它会读取 的主机名?process.env.usernameprocess.env.username

以下是来自 app.js 的代码片段代码:

const express = require('express')
const app = express();

const dotenv = require('dotenv')

// Setting up the post for server
dotenv.config({
    path: './utils/config.env',
    override: true
})

console.log(`*** Username: ${process.env.USERNAME}`)
console.log(`*** Username: ${process.env.USER_NAME}`)
console.log(`*** Username: ${process.env.UNAME}`)
console.log(`*** Password: ${process.env.password}`)

const PORT = process.env.PORT;
app.listen(PORT, () => {
    console.log(`Server has started on port: ${process.env.PORT} in ${process.env.NODE_ENV} mode.`)
})

这是 config.env 文件中的内容:

PORT = 3000
NODE_ENV = development

USERNAME = USERNAME1
USER_NAME = USERNAME2
UNAME = USERNAME3
password = password@123

我应该如何理解这一点,(我猜)当我们处理 NodeJS 时,在文件中定义用户名和密码的推荐方法是什么?config.env

当我添加“_”(如USER_NAME或任何其他形式的“用户名”)时;然后它按预期工作。

JavaScript 节点.js 表示 dotenv

评论

0赞 Phil 10/18/2023
编辑您的问题以包含您正在使用的代码。
0赞 elysium 10/18/2023
@Phil:我添加了节点,请检查。感谢您的及时回复!
0赞 Phil 10/18/2023
你的文件里有什么?请提供您期望的样品与您实际收到的样品。另外,你为什么要多次打电话?config.envdotenv.config()
0赞 elysium 10/18/2023
@Phil:添加了 app.js 和 config.env 的代码片段。请看一下。谢谢

答:

2赞 Phil 10/18/2023 #1

默认情况下,Dotenv 不会覆盖现有的 shell 变量。

您可以使用覆盖选项配置 dotenv 来解决此问题。

require('dotenv').config({
  path: './utils/config.env',
  override: true,
});

这将忽略与文件中同名的任何现有环境变量。config.env

评论

0赞 elysium 10/18/2023
您上面的回答解决了我的问题。它非常简洁和切中要害!谢谢:)