当我使用Ionic serve命令运行Ionic 3项目时,我会得到这个错误:
当前回答
如果在Visual Studio Code中运行React应用程序时发生了这种情况,请检查您的propTypes,未定义的propTypes会导致同样的问题。
其他回答
我没有使用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
在我的例子中,它是一个递归,导致React用完所有内存。
这发生在我重构代码时,我没有注意到这一点。
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
在其他Node.js应用程序中,这可能是这样的:
const someFunction = () => {
...
someFunction();
...
}
如果你在Windows上开发,在发布时遇到这个问题,请通过官方网站升级Node.js。
每更新一个Node.js版本,内存使用处理都会增加,尽管我没有找到确切的增加数字。
这是唯一对我有效的解决办法。我花了整整一个周末甚至更长的时间才解决这个问题。
当我运行angular 'ng serve'时,我也有类似的问题:
"致命错误:无效的标记-压缩接近堆限制分配失败- JavaScript堆内存不足"
在我的例子中,我发现我的Angular应用程序使用了惰性加载。一个模块已经导入到自己的路由模块,但有人做了一个导入它到应用程序模块,这导致递归(?)加载。
这会导致内存不足。
执行如下命令:
export NODE_OPTIONS="--max-old-space-size=2048"
检查你已经有多少钱了:
> node
> v8.getHeapStatistics()
{
total_heap_size: 6049792,
total_heap_size_executable: 524288,
total_physical_size: 5477720,
total_available_size: 1094444024,
used_heap_size: 4141728,
heap_size_limit: 1098907648,
malloced_memory: 8192,
peak_malloced_memory: 582752,
does_zap_garbage: 0,
number_of_native_contexts: 2,
number_of_detached_contexts: 0
}
然后heap_size_limit: 1098907648