开发者问题收集

Karma 未捕获 RangeError:超出最大调用堆栈大小

2017-12-04
6823

当我尝试运行 grunt karma:debug 时,Karma 出现此错误:

11 11 2017 00:00:00.000:INFO [Chrome 62.0.3202 (Linux 0.0.0)]: Connected on socket /#AAAA-AAAAAAAAAAAAAAA with id 99999999
Chrome 61.0.0000 (Linux 0.0.0) ERROR
  Uncaught RangeError: Maximum call stack size exceeded
  at http://localhost:9876/context.html
Chrome 61.0.0000 (Linux 0.0.0) ERROR
  Uncaught RangeError: Maximum call stack size exceeded
  at http://localhost:9876/context.html
Chrome 61.0.0000 (Linux 0.0.0): Executed 0 of 0 ERROR (1.035 secs / 0 secs)

这是什么原因?提交一些大型 JSON 文件后,该错误在一夜之间开始出现。如果我返回没有 JSON 文件的提交,该命令将再次开始工作。

2个回答

我在 karma.conf.js 文件中发现了问题:

config.set({
    ...
    files: [
        ...
        { pattern: "path/to/fixtures/**/*.json" },
        ...
    ]

该行使 Karma 在 HTML 页面中包含 JSON 文件,似乎无法处理我添加的 JSON 文件数量。解决方案是告诉 Karma 不要在 HTML 中包含这些文件,而是将它们作为 WebServer 提供:

config.set({
    ...
    files: [
        ...
        { pattern: "path/to/fixtures/**/*.json", included: false },
        ...
    ]

相关文档位于 此处

included
Type. Boolean
Default. true
Description. Should the files be included in the browser using
             <script> tag? Use false if you want to load them manually,
             eg. using Require.js.
DWilches
2017-12-04

确保只分配了一次组件变量,最好只在顶部 beforeEach 中分配。

component = fixture.componentInstance - 不应在每个描述中都给出该变量。

Tino Jose Thannippara
2020-09-08