NestJS项目启动报错dotenv: command not found如何解决?
问题原因
你安装的dotenv是核心功能库,仅支持在业务代码中引入后加载环境变量,没有内置终端可执行的CLI命令。你启动脚本中调用的dotenv命令来自独立的dotenv-cli工具包,这是两个完全不同的npm包,因此会抛出找不到命令的错误。
解决方案
以下三种方案任选其一即可:
- 方案1(无需修改现有脚本,最便捷)
安装项目级的dotenv-cli到开发依赖即可,执行命令:
安装完成后直接运行原有启动命令即可正常生效。yarn add -D dotenv-cli - 方案2(符合NestJS原生规范,推荐)
你已经安装了NestJS官方提供的@nestjs/config依赖,本身就支持环境变量加载,完全不需要额外调用dotenv命令:- 修改启动脚本为:
"start:dev": "nest start --watch"- 在项目根模块的
imports配置中添加以下内容即可指定配置文件路径:
ConfigModule.forRoot({ envFilePath: 'env/local.env', isGlobal: true // 可设为全局模块,不用在其他子模块重复引入 }) - 方案3(无需新增依赖,兼容现有dotenv包)
直接用node的预加载参数调用你已安装的dotenv包加载配置,修改启动脚本为:"start:dev": "node -r dotenv/config ./node_modules/.bin/nest start --watch dotenv_config_path=env/local.env"
注意事项
不建议全局安装dotenv-cli,所有项目依赖都安装到项目本地的devDependencies中,可保证所有协作者拉取代码后都能正常运行项目,避免环境差异导致的报错。
内容的提问来源于stack exchange,提问作者firattamur
相关产品推荐
相关产品推荐

