假设我正在使用 Typescript 编写一个名为
my-awesome-lib
的 npm 库。因为 my-awesome-lib
依赖于纯 ESM 库,所以我必须使用 ESM 语法,即 import
来使用该第三方库。现在一切正常了,包括玩笑,我按照这个 tutorial 将 my-awesome-lib
导出为 ESM 和 CommonJS 模块。
同时,我也在使用 CommonJS 语法编写一个依赖于我的自定义库的应用程序,即
require('my-awesome-lib')
,但是 jest 测试套件无法运行,因为:
必须使用import来加载ES模块:path/to/application/node_modules/3rd_party/index.js
这对我来说有点意义,因为第 3 方库是纯 ESM 的,你不能 require ESM 包 - 但这也让我困惑:我不是已经告诉 Typescript 将源代码编译成 CommonJS (如以及 ESM)?
我还关注了 Dan Fabulich 关于 ESM vs CommonJS 的精彩帖子,但我仍然没有答案。
有人可以帮忙吗?谢谢一百万。
我对这个问题也有一些困惑,正在努力解决。