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

react-app-rewired生产环境build失败提示系统内存不足问题求助

问题排查与解决方案

核心问题定位

  1. 内存参数配置错误:--max_old_space_size=8096是Node.js运行时参数,你当前将其作为react-app-rewired的入参传入,导致内存上限配置不生效,构建过程中内存超出系统限制时进程被直接终止。
  2. 服务器可用内存不足:若生产服务器可用内存小于你设置的内存阈值,就算参数配置正确也会触发OOM(内存溢出)导致进程被kill -9终止。

可行解决方案

  • 修正build命令的参数位置,将Node运行时参数全部放入NODE_OPTIONS中,使其全局生效。可根据服务器实际内存调整max_old_space_size的数值,若服务器内存较小可先设置为2048或4096,避免申请内存超出系统上限:
"scripts": {
  "start": "PORT=4001 react-app-rewired start",
  "build": "export NODE_OPTIONS='--openssl-legacy-provider --max_old_space_size=4096'; react-app-rewired build",
  "test": "react-app-rewired --env=jsdom"
}
  • 降低构建内存开销,修改config-overrides.js关闭生产环境sourcemap、调整压缩配置,减少内存占用:
const path = require('path');
const {override, addLessLoader, disableSourceMap} = require('customize-cra')
const TerserPlugin = require('terser-webpack-plugin');

const overrideProcessEnv = value => config => {
  config.resolve.modules = [
    path.join(__dirname, 'src')
  ].concat(config.resolve.modules);
  // 调整压缩插件配置,降低内存占用
  config.optimization.minimizer = [
    new TerserPlugin({
      parallel: 2, // 内存小于4G可设为1
      terserOptions: {
        compress: {
          drop_console: true,
        }
      }
    })
  ]
  return config;
};

module.exports = override(
  disableSourceMap(), // 关闭sourcemap可大幅降低内存开销和构建产物大小
  addLessLoader({
    javascriptEnabled: true,
  }),
  overrideProcessEnv({
    VERSION: JSON.stringify(require('./package.json').version),
  })
);
  • 优化依赖版本,你构建日志中存在大量过期依赖警告,升级react-scripts到最新稳定版,修复依赖兼容性问题的同时可降低编译过程的内存开销。
  • 若为Linux服务器且内存不足,可临时创建swap交换分区兜底,避免进程直接被系统终止:
# 临时创建2G交换分区
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 构建完成后清理交换分区
swapoff /swapfile
rm /swapfile

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:45:04