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

Windows10下通过NPM设置NODE_ENV导出Node.js对象返回undefined如何解决?

问题产生原因
  • Windows CMD 执行SET命令设置环境变量时,会保留等号右侧到&&之前的所有字符(包括空格)作为变量值。你package.json中prod脚本写的是SET NODE_ENV=production && node .,production后面有一个空格,因此实际process.env.NODE_ENV的取值是带末尾空格的"production ",并非预期的无空格字符串。
  • 代码中用带空格的currentEnv去匹配environments对象的键,无法命中production属性,排查时如果没有识别出字符串末尾的隐形空格,就会误以为currentEnv是正常的"production",实际上匹配不到对应配置才导致后续取值异常。
无第三方依赖的解决方案

有两种兼容方案可选,推荐优先选第二种从逻辑层规避问题:

方案1:修改启动脚本

去掉SET命令中变量值和&&之间的空格,确保环境变量值不带多余空格:

{
  "scripts": {
    "dev": "node .",
    "prod": "SET NODE_ENV=production&& node ."
  }
}

方案2:优化环境变量取值逻辑

在config.js中对拿到的环境变量做首尾去空格处理,从根源避免空格、换行等隐形字符导致的匹配失败:

// 仅修改currentEnv取值行,新增trim()处理首尾空白
const currentEnv = typeof process.env.NODE_ENV === 'string' ? process.env.NODE_ENV.trim().toLowerCase() : '';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:39:03