如何在CommonJS中动态导入chai?

问题描述 投票:0回答:1

chai
最新版本
5.1.2
移至ESModule。是否可以在 CommonJS 文件中继续使用它?
chai
只是我项目中的一个开发依赖项,用于单元测试。我不想将我的模块升级到 ESModule。

我尝试了下面的代码:

const expect = (...args) => import('chai').then((mod) => mod.expect(...args));
expect ('true').to.equal('false');

它会报告以下错误:

TypeError: Cannot read properties of undefined (reading 'equal')

下面的代码有效,但我不想为每个期望添加此代码。我有很多期望语句。

import('chai').then(chai => {
  expect = chai.expect;
  expect('true').to.equal('false');
  
});

另一个选项是添加如下所示的行

const expectEqual = (arg1, arg2) => import('chai').then((mod) => mod.expect(arg1).to.equal(arg2));

这意味着我需要为所有类型的期望添加声明。

expect.to.be
expect.to.deep.equal
...

CommonJS中有没有更好的动态导入chai的方法?

chai commonjs dynamic-import esmodules
1个回答
0
投票

在你的 commonJS 模块中尝试类似的事情:

const importExpect = async () => await import('chai').then((chai) => chai.expect);

(async () => {
    const expect = await importExpect()
    // your old tests
    expect('true').to.equal('true');
    // your old tests
})()
© www.soinside.com 2019 - 2024. All rights reserved.