Перейти к основной части
版本:27.0

МодулиECMAScript

JestобеспечиваетэкспериментальнуюподдержкумодулейECMAScript (ESM)。

Обратитевнимание,чтовтекущейреализациисуществуетмножествоошибок,какизвестных,такинеизвестных。,Крометогоневесьфункционалдоконцареализован。你应该去看看跟踪问题标签在问题跟踪器上获取最新状态。

还要注意,Jest用于实现ESM支持的api仍然没有改变Node认为是实验性的(版本14.13.1).

在没有警告的情况下,这就是在测试中激活ESM支持的方法。

  1. 确保你要么禁用代码转换通过变换:{}或者配置您的转换器以发出ESM而不是默认的CommonJS (CJS)。
  2. 执行节点——experimental-vm-modules,如。节点——experimental-vm-modules node_modules /开玩笑/ bin / jest.jsNODE_OPTIONS =——experimental-vm-modules npx笑话等。В Windows вы можете использоватьcross-envдля настройки переменных среды。
  3. Кроме того, мы пытаемся следовать логике节点для активации“ESM模式”(например, глядя на类型вpackage.jsonилиналичие乔丹файлов),смотритедокументациюзаподробностями。
  4. 如果您想处理其他文件扩展名(例如.jsx.ts),请使用extensionsToTreatAsEsm选项

Различия между ESM и CommonJS

Большинство различий объясняются вдокументации节点,новдополнениекупомянутымвнейвещам,Jestдобавляетспециальнуюпеременнуювовсеисполняемыефайлы——объект开玩笑.ДлядоступакэтомуобъектувESMнеобходимоимпортироватьегоизмодуля@jest /全局

进口 开玩笑 “@jest /全局”
开玩笑 useFakeTimers
/ /итд。

Пожалуйста,обратитевнимание,чтовнастоящеевремямынеподдерживаемjest.mockв esm, но мы намерены добавить это в будущем。Смотритеэтупроблемудля получения свежей информации。