React应用Yarn部署触发Unhandled 'error' event错误该如何解决
报错根因说明
该报错为Windows环境下terser-webpack-plugin依赖的jest-worker子进程通信异常导致,通常由参数配置错误、多进程压缩兼容问题、依赖版本不匹配引发。
可行解决方案
1. 修正内存参数配置
你之前的--max-old-space-size参数位置错误,该参数是Node.js的启动参数,不能直接加在react-app-rewired后面,修改package.json的build命令为:
"build": "node --max-old-space-size=8192 node_modules/react-app-rewired/bin/index.js build",
也可以通过NODE_OPTIONS环境变量配置,写法更简洁:
"build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 react-app-rewired build",
如果使用cross-env需要先执行yarn add cross-env -D安装依赖
2. 禁用terser多进程压缩
Windows系统下terser的多进程压缩容易出现IPC通信异常,修改项目根目录的config-overrides.js配置,关闭多进程:
const TerserPlugin = require('terser-webpack-plugin'); module.exports = function override(config, env) { // 仅生产环境构建时修改压缩配置 if (env === 'production') { config.optimization.minimizer = config.optimization.minimizer.map(plugin => { if (plugin instanceof TerserPlugin) { // 关闭多进程压缩 plugin.options.parallel = false; } return plugin; }); } return config; }
3. 完全重置项目依赖
- 关闭所有占用项目文件的程序(编辑器、终端、调试进程等)
- 删除项目根目录的
node_modules文件夹、yarn.lock、package-lock.json文件 - 执行
yarn install重新安装所有依赖
4. 更换Node.js版本
如果当前使用的是非LTS的尝鲜版,或者低于14.x的老旧版本,卸载后安装16.x/18.x的Node.js LTS稳定版,重装后重新执行依赖安装和构建。
5. 替换压缩工具(可选)
如果以上方案都无效,可以替换terser为性能更高、兼容性更好的esbuild进行压缩,通过react-app-rewired引入esbuild-loader或者esbuild-minimizer-webpack-plugin即可。
内容的提问来源于stack exchange,提问作者Rahul Sharma
相关产品推荐
相关产品推荐

