节点中带有es模块的jest typescript_模块错误-必须使用导入加载es模块:

ycggw6v2  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(519)

我正在尝试为我们使用的仅导出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。

tp5buhyn

tp5buhyn1#

你没有一个 tsconfig.json 指定 module . 因此,它使用默认值,将所有模块传输到 CommonJS 语法,它使用 require .
如果你真的看你的 dist/hocuspocus-server.esm.js ,您应该使用 require 通过esm导入语法。

相关问题