Nodemon Not Loading .env Variables in Node.js 20.9.0(未定义)

uujelgoq  于 11个月前  发布在  Node.js
关注(0)|答案(2)|浏览(137)

当我使用node --env-file=.env index.js运行我的应用程序时,环境变量可以正确加载。但是,当我尝试使用nodemon和脚本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'"},但仍然未定义。

cpjpxq1n

cpjpxq1n1#

解决方案一:

经过一些故障排除,我发现这个问题与如何解释引号有关。通过删除命令node --env-file=.env index.js部分的引号,问题得到了解决。

"dev": "nodemon --exec node --env-file=.env index.js"

字符串

**要点:**在某些环境或shell配置中,package.json脚本中处理引号的方式可能会导致意外行为或错误。如果您遇到类似问题,调整脚本命令中引号的使用可能会提供解决方案。

方案二

另外,我发现另一个解决方案是将nodemon.json添加到根文件夹,并添加以下内容

{
    "execMap": {
      "js": "node --env-file=.env"
    }
}


现在您可以保持package.json的相同"dev": "nodemon index.js"不变。

7gcisfzg

7gcisfzg2#

您写了

nodemon --exec 'node --env-file=.env index.js'

字符串
但是,你会希望index.js在引号**之外:

» npx nodemon --exec 'node --env-file=.env' index.js

Demo

» 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

相关问题