提问人:Sakar 提问时间:11/17/2023 更新时间:11/17/2023 访问量:60
Nodemon 未在 Node.js 20.9.0 中加载 .env 变量(未定义)
Nodemon Not Loading .env Variables in Node.js 20.9.0 (undefined)
问:
当我使用 运行我的应用程序时,环境变量会正确加载。但是,当我尝试使用带有脚本的 nodemon 运行相同的应用程序时,环境变量未定义。node --env-file=.env index.js
npm run dev
- Node.js 版本:20.9.0
- Nodemon 版本:3.0.1
我尝试将package.json配置为 ,但它仍然未定义。"scripts": {"dev": "nodemon index.js"},
"scripts": {"start": "nodemon --exec 'node --env-file=.env index.js'"}
答:
0赞
Wil Moore III
11/17/2023
#1
你写道:
nodemon --exec 'node --env-file=.env index.js'
但是,你会希望 在引号之外:index.js
» npx nodemon --exec 'node --env-file=.env' index.js
演示:
» cat .env
ENVIRONMENT_NAME=local
» cat index.js
console.log(process.env.ENVIRONMENT_NAME);
» npx nodemon --exec 'node --env-file=.env' index.js
[nodemon] 3.0.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node --env-file=.env index.js`
local
[nodemon] clean exit - waiting for changes before restart
这同样适用于包脚本:
» cat package.json
{
"name": "env",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "npx nodemon --exec 'node --env-file=.env' index.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
» npm start
> [email protected] start
> npx nodemon --exec 'node --env-file=.env' index.js
[nodemon] 3.0.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node --env-file=.env index.js`
local
[nodemon] clean exit - waiting for changes before restart
评论
1赞
Sakar
11/17/2023
这并没有解决问题。直接在命令行中执行时,您的命令和我的命令都可以工作。但是,当我在 package.json 中配置命令并使用 npm run dev 运行它时,它无法正常运行。谢谢你的回答。
2赞
Sakar
11/17/2023
#2
解决方案 1:
经过一些故障排除,我发现问题与引号的解释方式有关。通过删除命令部分周围的引号,问题已得到解决。node --env-file=.env index.js
"dev": "nodemon --exec node --env-file=.env index.js"
关键要点:在某些环境或 shell 配置中,package.json脚本中处理引号的方式可能会导致意外行为或错误。如果遇到类似问题,调整脚本命令中引号的使用可能会提供解决方案。
解决方案 2
我还发现了另一个解决方案,即添加到根文件夹并向其添加以下内容nodemon.json
{
"execMap": {
"js": "node --env-file=.env"
}
}
现在,您可以保持原样。"dev": "nodemon index.js"
package.json
0赞
Muhamed Fazeel
11/26/2023
#3
尝试像这样替换您的开发脚本:
"dev": "nodemon --env-file=.env index.js"
评论