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

相同代码本地与服务器执行yarn build时NODE_ENV取值不一致怎么办

可能的原因及验证方法
  • 服务器shell预设环境变量优先级更高
    webpack读取process.env.NODE_ENV时会优先取当前shell环境中已经存在的变量值,大部分服务器会在~/.bashrc、~/.zshrc、/etc/profile这类shell配置文件中全局预设NODE_ENV=development,而本地环境没有该预设,就会出现两边输出差异。
    验证方式:在服务器执行echo $NODE_ENV,如果输出development即可确认是该问题。
  • 包管理器版本行为差异
    不同版本的yarn、npm对script脚本的隐式环境变量注入逻辑不同,部分旧版本包管理器不会在执行build类命令时自动注入NODE_ENV=production,若你本地使用的包管理器版本和服务器不一致,就会出现该问题。
    验证方式:两端分别执行yarn -v、npm -v核对版本是否完全一致。
  • 依赖安装结果不一致
    即便代码完全相同,若服务器没有同步你本地的yarn.lock/package-lock.json锁文件,或是安装依赖时使用了--force、--update等强制升级参数,会导致webpack及相关依赖的安装版本和本地不同。webpack 4+会根据mode配置自动赋值process.env.NODE_ENV,而更低版本的webpack没有该逻辑,会直接读取环境变量默认值development。
  • 命令别名篡改执行逻辑
    若服务器的shell配置了yarn或webpack的别名,比如别名中默认拼接了--mode development参数,即使你package.json的scripts配置和本地一致,实际执行的命令也会和本地不同。
    验证方式:在服务器执行type yarn、type webpack检查是否存在别名配置。
快速解决方案

直接在build命令中显式指定NODE_ENV值,覆盖所有默认逻辑:

"scripts": {
  "build": "NODE_ENV=production webpack --config webpack.build.js"
}

Windows环境需调整为:

"scripts": {
  "build": "set NODE_ENV=production && webpack --config webpack.build.js"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:57:00