Angular项目运行ng serve报JavaScript堆内存不足,ng build --prod正常
问题原因
你遇到的是Angular开发服务启动时Node.js堆内存溢出错误。ng build --prod能正常执行是因为生产构建默认不会开启开发模式下的增量编译、全量源码映射、热更新监听等高内存占用特性,内存需求远低于开发启动场景。你之前手动配置8G堆内存不生效,通常是执行方式或配置覆盖问题导致。
解决方案
方案1:正确配置Node堆内存上限
不要直接在命令行执行内存参数+ng serve的组合,Windows环境下容易出现路径解析、参数不生效的问题,推荐直接在项目package.json中配置自定义启动脚本:
打开package.json,找到scripts配置块,新增如下配置:
"scripts": { "start": "node --max_old_space_size=12288 ./node_modules/@angular/cli/bin/ng serve", // 保留原有其他脚本配置 }
后续启动项目直接执行npm run start即可,12288对应12G堆内存,可根据你设备的实际内存大小调整。
方案2:优化开发模式配置降低内存占用
修改angular.json中开发服务的配置项,砍掉非必要的高内存开销功能:
找到 projects > 你的项目名 > architect > serve > options 节点,新增/修改如下配置:
"options": { // 禁用样式、第三方依赖的源码映射,仅保留业务代码源码映射,可直接全设为false彻底关闭 "sourceMap": { "scripts": true, "styles": false, "vendor": false }, // 开发模式关闭AOT编译和构建优化 "aot": false, "buildOptimizer": false }
如果项目包含大量路由模块,检查是否开启了路由懒加载,避免所有模块打包到同一个chunk导致内存占用过高。
方案3:修复版本兼容问题
Node 14.17.0和Angular 11.0.5存在已知的底层内存泄漏问题,二选一调整版本即可:
- 降级Node版本到12.x LTS稳定版,和Angular 11的兼容性最优
- 升级Angular 11的小版本到11.2.x最终稳定版,修复官方已知的内存泄漏问题
临时应急方案
如果暂时不想调整配置,每次启动前先清空Angular缓存再启动即可:
ng cache clean # 再执行启动命令
内容的提问来源于stack exchange,提问作者Anurag
相关产品推荐
相关产品推荐

