GitHub Action部署Firebase时JavaScript堆内存不足错误求助
解决GitHub Action构建React项目内存溢出问题
问题原因
GitHub托管的Runner默认内存资源有限,加上项目中旧依赖可能存在内存占用过高或泄漏问题,导致构建时触发Node.js堆内存溢出错误,而本地机器内存充足所以能正常构建。
解决步骤
1. 增加Node.js内存限制
直接给Node进程分配更多内存,两种方式二选一:
- 修改项目
package.json的build脚本:"scripts": { "build": "react-scripts --max-old-space-size=4096 build" } - 或者在GitHub Action的构建步骤中设置环境变量:
- name: 执行构建 env: NODE_OPTIONS: "--max-old-space-size=4096" run: npm run build
2. 更新旧依赖,清理冗余包
日志中显示大量依赖已废弃,这些旧版本可能存在内存效率问题:
- 删除本地的
package-lock.json和node_modules文件夹,重新执行npm install - 手动更新废弃依赖:
- 将
axios升级到v0.21.1及以上版本 - 将
core-js/core-js-pure升级到v3.23.3及以上版本 - 将
svgo升级到v2.x版本 - 将
font-awesome相关依赖升级到v6.1.0及以上版本
- 将
3. 优化构建过程,减少内存消耗
- 先更新浏览器兼容数据,减少不必要的编译工作:
npx browserslist@latest --update-db - 关闭SourceMap生成(如果不需要),能大幅降低内存占用:
在GitHub Action构建步骤中添加环境变量:- name: 执行构建 env: GENERATE_SOURCEMAP: false NODE_OPTIONS: "--max-old-space-size=4096" run: npm run build
4. 使用更大规格的GitHub Runner
如果以上方法都无效,改用大内存规格的Runner:
jobs: build-and-deploy: runs-on: ubuntu-latest-large steps: # 你的拉取代码、安装依赖、构建、部署步骤
内容的提问来源于stack exchange,提问作者NAYN9
相关产品推荐
相关产品推荐

