当我try 使用Jest 29.7.0运行测试时,它显示以下错误:
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
...
Details:
D:\<redacted>\node_modules\.pnpm\uuid@8.3.2\node_modules\uuid\dist\esm-browser\index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){export { default as v1 } from './v1.js';
^^^^^^
SyntaxError: Unexpected token 'export'
> 1 | import { v4 as uuid } from 'uuid';
| ^
2 |
乍一看,这和seem上讨论的问题是一样的.然而,这篇文章出自多年前,结论似乎是"等到Jest支持包导出".
Jest现在似乎支持ESModules,我得到的错误甚至引用了关于它的instructional page.我相信我已经按照该页上的说明进行了操作,但我仍然看到这个错误.
- 我做了not个页面上的#1(禁用代码转换),因为uuid包来self 的node_modules目录,错误消息本身说'默认情况下,"node_modules"文件夹被transformers忽略.考虑到它会被自动忽略,我认为我不需要禁用任何额外的代码转换
- 运行jest时,我使用
--experimental-vm-modules
标志执行了node:
node --experimental-vm-modules D:\<redacted>\node_modules\jest\bin\jest.js sample.test.ts
我认为我不需要做任何其他事情(即,我没有使用extensionsToTreatAsEsm
选项,因为有问题的文件(来自UUID的index.js)具有标准扩展名.)
我是不是忽略了什么?我相信我已经在Jest中启用了ESM支持,但它似乎仍然不喜欢我使用UUID包.