在为一些ES6模块编写一些测试套件时,我发现Jest v26.6在尝试进行一些循环导入时会出现错误。
这个问题可以简化为如下内容:
ClassA.mjs
import {B} from './ClassB.mjs';
class A {
constructor()
{
//...
}
}
ClassB.mjs
import {A} from './ClassA.mjs';
class B extends A {
constructor()
{
super();
// ...
}
}
Cyclic.test.js
import {B} from "./ClassB.mjs";
describe('Cyclic', () => {
test('Cyclic', () => {
// ...
});
});
Jest以"最大调用堆栈大小超过"退出。错误消息,在其源的不同位置,取决于测试的导入。
是否有任何解决方案,任何已知的变通方法?
提前感谢。
我在使用NODE_OPTIONS='--experimental-vm-modules'
的Jest版本26中也看到了这一点。当我更新到Jest版本27(27.5.1)时,错误消失了。
RangeError: Maximum call stack size exceeded
Exception in PromiseRejectCallback:
internal/vm/module.js:321
const module = await linker(identifier, this);