跳转到主要内容
版本:26.倍

ECMAScript模块

Jest附带实验支持ECMAScript模块(ESM)。

请注意,由于Jest的实验性质,它的实现中有许多bug和缺失的特性,包括已知的和未知的。你应该去看看跟踪问题标签在问题跟踪器上获取最新状态。

还要注意,Jest用于实现ESM支持的api仍然是按节点考虑实验(版本14.13.1)。

排除了这些警告,这就是在测试中激活ESM支持的方法。

  1. 确保你禁用代码转换通过变换:{}或者配置您的转换器以发出ESM,而不是默认的CommonJS (CJS)。
  2. 执行节点——experimental-vm-modules,如。节点——experimental-vm-modules node_modules。bin /笑话NODE_OPTIONS =——experimental-vm-modules npx笑话等。在Windows上,你可以使用cross-env能够设置环境变量
  3. 除此之外,我们试图遵循节点激活“ESM模式”的逻辑(例如查看类型package.json乔丹文件),看到他们的文档yabo2013获取详细信息。

ESM和CommonJS的区别#

大部分的差异在节点的文档,但是除了这里提到的事情之外,Jest还将一个特殊的变量注入到所有执行的文件中开玩笑对象。要在ESM中访问此对象,您需要将其从@jest /全局模块。

进口 { 开玩笑 } “@jest /全局” ;
开玩笑 useFakeTimers ( ) ;
/ /等。

请注意,我们目前不支持jest.mock在ESM中以一种干净的方式,但这是我们打算在未来添加适当支持的东西。遵循这个问题为更新。