Windows运行Node.js提示DOTENV_CONFIG_PATH不是内部或外部命令解决方法
报错含义
这个错误是Windows命令行解释器与类Unix系统(Mac、Linux)的环境变量设置语法不兼容导致的。
Mac系统默认使用bash/zsh类shell,支持在执行命令前直接通过变量名=变量值 执行命令的格式临时注入环境变量,因此可以直接识别DOTENV_CONFIG_PATH=xxx这类前缀写法。但Windows自带的CMD、PowerShell不支持这种语法,会把整段DOTENV_CONFIG_PATH字符串当成可执行程序去查找,找不到对应程序就会抛出该报错。
可行解决方案
- 跨平台通用方案(推荐)
使用cross-env抹平不同系统的环境变量设置语法差异,一次配置全系统可用:- 安装依赖:在项目根目录执行
npm install cross-env -D - 修改
package.json中scripts字段下的对应命令,在环境变量配置前添加cross-env前缀。示例:
原Mac可用的写法:
修改后跨平台兼容的写法:"scripts": { "start": "DOTENV_CONFIG_PATH=./.env.custom node app.js" }"scripts": { "start": "cross-env DOTENV_CONFIG_PATH=./.env.custom node app.js" }
- 安装依赖:在项目根目录执行
- 单系统适配方案(仅Windows可用,不推荐)
不安装额外依赖的前提下,按照当前使用的Windows命令行类型修改命令语法:- 使用CMD时,写法为
set DOTENV_CONFIG_PATH=./.env.custom && node app.js - 使用PowerShell时,写法为
$env:DOTENV_CONFIG_PATH="./.env.custom"; node app.js
注意该写法仅适配Windows,在Mac/Linux环境下会触发同类报错。
- 使用CMD时,写法为
- 运行环境替换方案
在Windows上安装WSL(Windows Subsystem for Linux),在WSL环境内执行项目命令,语法与Mac环境完全一致,无需修改项目原有配置。 - dotenv-cli适配方案
如果项目是通过dotenv-cli加载环境变量,可以直接替换为dotenv-cli自带的路径指定参数,写法天然跨平台:将原命令替换为dotenv -e ./.env.custom node app.js即可,不需要单独设置DOTENV_CONFIG_PATH变量。
内容的提问来源于stack exchange,提问作者Ansaen
相关产品推荐
相关产品推荐

