Jest es6模块:意外的模块导入

Alp*_*age 13 javascript unit-testing jestjs

我正在尝试测试一个需要导入es6模块的文件,如下所示:

https://repl.it/HG9t/0

我似乎缺少一些配置,以使其正常工作.

如果您可以轻松地使用另一个单元测试框架来实现这一点,我也很感兴趣.

预先感谢您的帮助.

Ily*_*ich 10

  1. 安装所需的依赖项:

yarn add --dev babel-jest @babel/core @babel/preset-env

或者

npm install --save-dev babel-jest @babel/core @babel/preset-env

  1. babel.config.js在您的主文件夹中创建并将其粘贴到那里:
// babel.config.js
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current',
        },
      },
    ],
  ],
};
Run Code Online (Sandbox Code Playgroud)
  1. 确保所有的笑话设置在package.jsonjest.config.js设置为默认。


And*_*rle 9

由于 node 不支持模块,因此您必须使用 Babel 编译文件。查看有关如何配置 Jest 和 Babel的文档

  • Node 从 v8.5 开始支持带有 `--experimental-modules` 标志的模块。 (11认同)
  • @BielSimon 是的,没有 mjs 扩展。您需要在 package.json 中使用 `"type": "module"` 和 Dan 提到的标志。 (5认同)
  • `"type": "module"` 只能从 Node v12 开始工作 https://nodejs.org/docs/latest-v12.x/​​api/esm.html 但你可以使用 `node -r esm` (2认同)