【问题标题】:Jest es6 modules: unexpected module importJest es6 模块:意外的模块导入
【发布时间】:2017-09-08 01:09:16
【问题描述】:

我正在尝试测试一个需要像这样导入 es6 模块的文件:

https://repl.it/HG9t/0

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

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

提前感谢您的帮助。

【问题讨论】:

标签: javascript unit-testing jestjs


【解决方案1】:
  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',
        },
      },
    ],
  ],
};
  1. 确保package.jsonjest.config.js 中的所有笑话设置都设置为默认值。

【讨论】:

  • 我收到“加载配置时出错 - 您似乎正在使用本机 ECMAScript 模块配置文件,该文件仅在异步运行 Babel 时受支持。”
【解决方案2】:

由于节点不支持模块,您必须使用 Babel 编译文件。查看docs 了解如何配置 Jest 和 Babel

【讨论】:

  • Node 从 v8.5 开始支持带有 --experimental-modules 标志的模块。
  • 即使没有 .mjs 扩展名?
  • @BielSimon 是的,没有 mjs 扩展。你需要 "type": "module" 在你的 package.json 和 Dan 提到的标志。
  • "type": "module" 只能从节点 v12 开始工作 nodejs.org/docs/latest-v12.x/api/esm.html 但您可以使用 node -r esm
  • 你甚至根本不需要"type":"module"(除非你用官方的Node方式做事)。如果你只是使用 -r esm ... 和支持它的普通库(例如 Node 本身或 Mocha),ES6 模块“就可以工作”。
猜你喜欢
  • 2021-01-21
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 2019-02-13
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多