在开玩笑中运行循环 ES6 导入时"Maximum call stack size exceeded"



在为一些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)时,错误消失了。

在Jest版本26中,我的错误如下:
RangeError: Maximum call stack size exceeded
Exception in PromiseRejectCallback:
internal/vm/module.js:321
const module = await linker(identifier, this);

相关内容

  • 没有找到相关文章

最新更新