Node.js启动脚本加载.env文件失败,报bad option: --env-file错误
解决Node.js脚本中--env-file选项报错的问题
错误根源
你遇到的node: bad option: --env-file=./.env/.env.dev错误,核心原因是Node.js的--env-file内置选项是v20.6.0版本才新增的功能,如果你的Node版本低于这个版本,就会识别不了该参数,抛出错误。
另外注意到报错信息里的路径是./.env/.env.dev,但你package.json脚本里写的是./env/.env.dev,需要确认.env文件的实际存放路径,避免路径不匹配导致后续加载失败。
解决方案
方案1:升级Node.js版本
直接将Node.js升级到v20.6.0或更高版本,即可原生支持--env-file选项:
- 若使用nvm管理版本,执行:
nvm install 20.6.0 nvm use 20.6.0 - 也可直接从Node.js官方渠道下载最新稳定版安装。
升级后确认脚本里的.env路径正确(比如文件在env/.env.dev就保持原脚本不变),重新运行npm run start:dev即可。
方案2:用dotenv包加载环境变量(无需升级Node)
如果不想升级Node版本,使用社区的dotenv包同样可以加载.env文件:
- 安装dotenv依赖:
npm install dotenv --save-dev - 在
server.ts最顶部添加加载代码:import dotenv from 'dotenv'; // 根据实际文件位置调整路径 dotenv.config({ path: './env/.env.dev' }); - 修改package.json的脚本,移除
--env-file选项:"scripts": { "start:dev": "node --loader ts-node/esm source/server.ts" }
额外注意事项
- 修正.env文件格式:
DB_PWD= my_secret和DB_NAME= my_secret里的空格会导致变量值带多余空格,建议改成DB_PWD=my_secret、DB_NAME=my_secret,避免解析异常。 - 确认tsconfig.json配置无误,当前配置已满足ts-node解析ES模块的要求。
内容的提问来源于stack exchange,提问作者Ninja G
相关产品推荐
相关产品推荐

