You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下dotenv加载含NODE_ENV变量路径的.env文件失败求助

解决Windows CMD下dotenv无法加载指定环境.env文件的问题

问题根源

Windows CMD里用set NODE_ENV=development & node index.js时,NODE_ENV的值会自带一个空格——CMD的set命令对空格敏感,=两边的空格会被保留到变量值里。你的代码拼接的路径是.env.development,但实际环境变量是development (末尾带空格),自然找不到对应文件,导致加载失败。而PowerShell的变量赋值不会带多余空格,所以能正常工作。

快速解决方法

1. 修正CMD的环境变量写法

去掉set命令中等号两边的空格,用引号包裹变量值彻底避免空格问题:

set "NODE_ENV=development" && node index.js

这样设置的NODE_ENV值就是纯development,代码里拼接的路径能精准匹配.env.development文件。

2. 代码层面兼容处理

给环境变量加个trim(),不管终端有没有带空格都能自动清理:

const dotenv = require('dotenv');
const environment = (process.env.NODE_ENV || 'development').trim();
console.log(environment);
const dotenvPath = `.env.${environment}`;
console.log(dotenvPath);
dotenv.config({ path: dotenvPath });

console.log(process.env.PORT);
console.log(process.env.NODE_ENV);

修改后再用原来的CMD命令运行,也能正确加载.env.development。

3. 跨终端统一方案(推荐)

用cross-env包消除Windows和类Unix终端的环境变量设置差异:

  • 先安装依赖:
npm install cross-env --save-dev
  • 在package.json的scripts里配置启动命令:
{
  "scripts": {
    "dev": "cross-env NODE_ENV=development node index.js"
  }
}

之后直接运行npm run dev,不管用CMD、PowerShell还是Git Bash,都能正确加载对应环境的配置文件。

验证效果

用修正后的CMD命令执行:

set "NODE_ENV=development" && node index.js

此时控制台会输出5002,说明.env.development已成功加载。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:18:29