当我使用Ionic serve命令运行Ionic 3项目时,我会得到这个错误:


当前回答

对于那些从谷歌中找到这个问题的人,一个非angular的一般答案是:

大多数情况下,当你遇到这个错误时,可能是因为内存泄漏,库的添加/版本升级或Node.js在版本之间管理内存的方式不同(例如Node.js版本<= 10和Node.js版本> 10)。

通常只是增加分配给node .js的内存就可以让你的程序运行,但实际上可能并不能解决真正的问题,节点进程使用的内存仍然可能超过你分配的新内存。我建议在Node.js进程开始运行或更新到Node.js > 10时分析内存使用情况。

我有内存泄漏。 这是一篇关于在Node.js中调试内存泄漏的很棒的文章。

也就是说,为了增加内存,在运行Node.js进程的终端中:

export NODE_OPTIONS="--max-old-space-size=8192"

max-old-space-size的值可以是:[2048,4096,8192,16384]等等

为了进一步清晰,还有更多例子:

export NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB

# and so on...

# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" # Increase to X GB

# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes (MB) you have available.

查看max-old-space-size的当前值(单位:MB)

要查看max-old-space-size(以MB为单位)的当前值(不精确但非常接近),请在终端中运行

node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'

其他回答

从Node.js 12更新到Node.js 14为我解决了这个问题。


现在更新Node.js 16可用,我建议更新到Node.js的最新可用版本。

当我运行angular 'ng serve'时,我也有类似的问题:

"致命错误:无效的标记-压缩接近堆限制分配失败- JavaScript堆内存不足"

在我的例子中,我发现我的Angular应用程序使用了惰性加载。一个模块已经导入到自己的路由模块,但有人做了一个导入它到应用程序模块,这导致递归(?)加载。

这会导致内存不足。

当我在Visual Studio Code中执行以下语句时,我得到了相同的错误消息。但是当我在Windows命令行中执行相同的东西时,我可以成功地构建。

npm install -g increase-memory-limit
increase-memory-limit
set NODE_OPTIONS=--max_old_space_size=4096
ng build -c deploy --build-optimizer --aot --prod --sourceMap

我没有使用ng build,而是在终端中执行以下命令来修复这个问题。

 node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

那就发球吧。

这就是我的终端机

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS D:\ProjectPath\Project1> node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

#!在ionic-app-scripts.js文件中的/usr/bin/env node——max-old-space-size=4096不能正常工作。

修改node_modules /。bin / ionic-app-scripts。CMD

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node --max_old_space_size=4096  "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
)

最后工作。