我正在尝试为我们使用的仅导出es模块的第三方软件包编写一个简单的jest测试。这是一个包裹着一个盒子的 Package http
服务器。
这是一个测试repo i设置(只需运行 yarn && yarn jest
复制):https://github.com/jamesopti/hocuspocus-testing
无论我尝试使用什么配置,在尝试运行它时仍然会出现以下错误:
Must use import to load ES Module: /Users/j/hocuspocus-testing/node_modules/@hocuspocus/server/dist/hocuspocus-server.esm.js
> 1 | import { Server, Hocuspocus } from '@hocuspocus/server'
| ^
2 | import * as request from 'supertest'
3 |
4 | describe('Server (e2e)', () => {
我已经尝试过的事情:
es模块的jest说明:https://jestjs.io/docs/ecmascript-modules
使用
transformIgnorePatterns transformIgnorePatterns: ['node_modules/(?!@hocuspocus/)']
使用巴别塔via babel-jest
将jest配置中的转换设置修改为“^.+.jsx?$”:“babel jest”,“^.+.tsx?$”:“ts jest”
遇到了错误 You appear to be using a native ECMAScript module configuration file, which is only supported when running Babel asynchronously.
使用.babel.config.js而不是.babelrc.js
你知道我遗漏了什么吗?我觉得这很简单
[编辑1]-添加 tsconfig.json
和一个工作 src/index.ts
文件到示例repo。
1条答案
按热度按时间tp5buhyn1#
你没有一个
tsconfig.json
指定module
. 因此,它使用默认值,将所有模块传输到CommonJS
语法,它使用require
.如果你真的看你的
dist/hocuspocus-server.esm.js
,您应该使用require
通过esm导入语法。