Karma 单元测试 webpack:进程内存不足后返回的 API 致命错误处理程序

Posted

技术标签:

【中文标题】Karma 单元测试 webpack:进程内存不足后返回的 API 致命错误处理程序【英文标题】:Karma unit testing webpack:API fatal error handler returned after process out of memory 【发布时间】:2018-12-06 19:27:43 【问题描述】:

我正在尝试为我的项目执行业力单元测试用例。当我运行应用程序中可用的整个测试用例时,它失败并出现以下错误。但是当我通过执行文件夹中的所有控制器来配置运行更少的测试用例时,它可以工作。如何增加内存大小以执行所有测试用例。

尝试搜索,但找不到任何可行的解决方案。任何指导都会有所帮助。`

$ karma start karma.conf.js


#
# Fatal error in , line 0
# API fatal error handler returned after process out of memory
#
/c/Users/AB18082/AppData/Roaming/npm/karma: line 14: 20164 Segmentation fault      node "$basedir/node_modules/karma-cli/bin/karma" "$@"

编辑 1:

当我尝试增加尺寸时

$ node --max_old_space_size=10240 node_modules/karma/bin/karma start karma.conf.js

<--- Last few GCs --->

[13860:002BF998]   214803 ms: Scavenge 1021.9 (1358.6) -> 1021.6 (1365.1) MB, 146.9 / 0.0 ms  allocation failure
[13860:002BF998]   217090 ms: Mark-sweep 1026.8 (1365.9) -> 1014.7 (1355.9) MB, 2263.4 / 0.0 ms  allocation failure GC in old space requested
[13860:002BF998]   217243 ms: Scavenge 1022.6 (1359.5) -> 1022.5 (1363.5) MB, 75.4 / 0.0 ms  allocation failure
[13860:002BF998]   217479 ms: Scavenge 1029.7 (1364.1) -> 1029.6 (1366.6) MB, 225.5 / 0.0 ms  allocation failure


<--- JS stacktrace --->
Cannot get stack trace in GC.
FATAL ERROR: NewSpace::Rebalance Allocation failed - process out of memory

编辑 2:

在设置这些节点 --max_old_space_size=4096 更改后,我的应用程序本身现在没有加载。尝试卸载nodejs并清除

%appdata% 目录中的 npm 和 npm-cache 目录

现在启动应用程序时也出现这些错误。

FATAL ERROR: Committing semi space failed. Allocation failed - process out of memory
1: 00BF287E
2: 00FD3013
3: 00FD1B24
4: 00FD16FC

编辑:3

经过如此多的谷歌搜索,能够使用以下 cmd 修复加载应用程序,但测试仍然存在同样的问题。

env NODE_OPTIONS=--max_old_space_size=2048 node node_modules/webpack/bin/webpack

【问题讨论】:

你可以试试node --max_old_space_size=4096 node_modules/karma/bin/karma start 尝试上述命令后出现同样的问题 你的节点是什么版本?如果低于v8,能否请您更新到v8再试一次? 我的节点版本是8.9.3 :( 当我尝试在非 ng 类型的 angular + TS 混合上启用覆盖时,我得到了这个。它并不高兴。如果可以的话,我建议只使用覆盖范围的 ng-test .. 它工作得更好更快。我不得不禁用,因为我的 16gb RAM 机器快用完了.. 可能是我的错.. 但我从来没有设法修复它。 【参考方案1】:

一旦您对 package.json 进行如下更改,您的问题就会解决

"scripts": 
  "test": "node --max_old_space_size=4096 ./node_modules/karma/bin/karma start ./test-config/karma.conf.js",
  "test-ci": "node --max_old_space_size=4096 ./node_modules/karma/bin/karma start ./test-config/karma.conf.js --single-run",
  "test-coverage": "node --max_old_space_size=4096 ./node_modules/karma/bin/karma start ./test-config/karma.conf.js --coverage"
 

【讨论】:

以上是关于Karma 单元测试 webpack:进程内存不足后返回的 API 致命错误处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 配置篇

karma与webpack结合

有没有办法批量处理 Karma - Angular 单元测试?

Webpack 和 Angular 的单元测试覆盖映射损坏了吗?

使用业力和 webpack 4 运行单元测试时无法读取未定义的属性“externalModuleIndicator”

如何在 karma 测试运行器中包含来自 webpack 的供应商捆绑包