Windows环境下运行ng serve时JavaScript堆内存溢出问题求助
解决Windows下Angular项目
ng serve JavaScript堆内存溢出问题 直接带内存参数运行命令
系统环境变量里的--max-old-space-size在Windows下可能不会被Angular CLI读取到,直接在命令行执行带参数的启动命令:node --max-old-space-size=8192 node_modules/@angular/cli/bin/ng serve
这里把内存上限调到8G(可根据物理内存调整,比如16G内存可设为12288),适配大型模板的编译需求。修改package.json启动脚本
为避免每次输入长命令,直接修改项目根目录的package.json:
找到scripts字段下的serve(或start),改成:"serve": "node --max-old-space-size=8192 node_modules/@angular/cli/bin/ng serve"之后运行
npm run serve就会自动应用内存参数。清理缓存后重新安装依赖
缓存或损坏的依赖可能加剧内存占用问题,执行以下步骤:- 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 执行
npm cache clean --force清理npm缓存 - 重新运行
npm install - 再用修改后的启动命令运行项目
- 删除项目根目录的
检查Windows虚拟内存设置
Windows虚拟内存不足也可能导致堆溢出,调整虚拟内存:
右键「此电脑」→ 属性 → 高级系统设置 → 高级 → 性能「设置」→ 高级 → 虚拟内存「更改」
勾选「自动管理所有驱动器的分页文件大小」,或者手动设置更大的分页文件(建议设为物理内存的1.5-2倍)。匹配Angular CLI与Node.js版本
确认模板package.json中指定的@angular/cli版本和当前Node.js版本兼容:- Node.js 16.x 适配 Angular CLI 14.x 及部分15.x版本
- Node.js 18.x 适配 Angular CLI 15.x 及以上版本
如果版本不匹配,卸载全局CLI后安装模板指定版本:npm uninstall -g @angular/cli && npm install -g @angular/cli@<模板指定版本号>
Mac系统能正常运行是因为内存管理机制和Windows不同,相同内存配置下Mac的内存利用率更高,且默认虚拟内存配置更宽松。
内容的提问来源于stack exchange,提问作者kelvin
相关产品推荐
相关产品推荐

