分配失败 - 当 ng serve 时,Angular 11 中的 JavaScript 堆内存不足
Posted
技术标签:
【中文标题】分配失败 - 当 ng serve 时,Angular 11 中的 JavaScript 堆内存不足【英文标题】:Allocation failed - JavaScript heap out of memory in Angular 11 while ng serve 【发布时间】:2021-08-17 06:50:18 【问题描述】:-
我已将 Angular 版本从 5.2 升级到 11.2
在升级 Angular 和所有库后,当我启动服务器 (ng serve) 得到 分配失败 - JavaScript 堆内存不足
它还会生成 1 个包含信息的文件,但我没有得到
你能帮我解决这个问题吗?
-
Angular 版本和详细信息
【问题讨论】:
这取决于您的 PC 内存大小,您可以将其添加到您的 package.json 文件中: ... "start": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng serve", ..
@sohaiebazaiez 我已经尝试过,但出现多个错误 "export 'DOCUMENT' (imported as 'i28') was not found in '@angular/platform-browser'
更新的时候,通常最好是更新版本,一个一个...
@StPaulis 是的,我已经一一升级了所有库并解决了所有问题,但是当我尝试编译时,它会出现 javascript heap out of memory 错误
@Chaudhary 看起来你有 2 个问题:一个你通过添加 --max_old_space_size
解决的内存错误和很多由 export 'DOCUMENT'
引起的错误
【参考方案1】:
设置环境变量:
SET NODE_OPTIONS=--max_old_space_size=8048
【讨论】:
设置后我得到一些 DOCUMENT 错误,我最后添加了屏幕截图,并且我将 DOCUMENT 移动到@angular/common,但我仍然收到错误【参考方案2】:您可以为构建/启动任务分配更多内存以进行编译:
node --max_old_space_size=4096 ./node_modules/.bin/ng build
并且,根据对这个问题的回答:"export 'DOCUMENT' was not found in '@angular/platform-browser',DOCUMENT
已移至 @angular/common
。因此,您还必须更改导入才能编译代码。
【讨论】:
当我设置 node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng serve 时,我启动了我的服务器但得到了编译错误,这来自.ngFctory 文件,并且我已经从 @angular/common 导入 DOCUMENT 我添加了DOCUMENT错误的截图,请查看。【参考方案3】:我发现这个错误来自源映射的生成。禁用源映射将使错误消失。
由于大部分都需要source maps,所以在npm脚本中使用增加内存的解决方案而不是禁用source maps,就可以解决了。
示例:
scripts:
"build": "node --max_old_space_size=6000 ./node_modules/@angular/cli/bin/ng build",
"serve": "node --max_old_space_size=6000 ./node_modules/@angular/cli/bin/ng serve"
【讨论】:
以上是关于分配失败 - 当 ng serve 时,Angular 11 中的 JavaScript 堆内存不足的主要内容,如果未能解决你的问题,请参考以下文章
手动重启 `ng build --watch` 或 `ng serve`
“ng e2e”可能因代理而失败,但“ng serve”和“ng test”正在运行
当同时运行 ng build --watch 和 ng serve 时,Angular 7 库 html-template 更改不会影响到应用程序
使用 ng2-pdf-viewer 时 ng-serve 出错