提问人:elysium 提问时间:10/18/2023 最后编辑:Communityelysium 更新时间:11/1/2023 访问量:57
为什么 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
问:
我在文件中定义了用户名和密码,并尝试使用 dotenv 包进行检索。config.env
当我尝试检索时,它会获取主机名。无论我定义的是所有小写字母还是大写字母;它返回计算机主机名。username
是否与一些变量名称冲突有关,并且根据设计,它会读取 的主机名?process.env.username
process.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或任何其他形式的“用户名”)时;然后它按预期工作。
答:
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
您上面的回答解决了我的问题。它非常简洁和切中要害!谢谢:)
评论
config.env
dotenv.config()