我有一个使用Nx构建的 monorepo 项目。该存储库包含我的后端项目的几个可重用库。这些包是从多个项目中收集的,以创建可重用的库。
\n我使用 Jest 创建并运行我的 monorepo 中使用的单元测试。
\n当我运行 jest 时,在某些测试中,它会抛出有关无法导入 .js 文件的错误export
。
奇怪的是这些模块有一个 commonjs 版本,我可以在我的其他项目中毫无问题地模拟这些包,而无需 monorepo 结构。但是当我在 monorepo 项目中使用相同的代码时(我想让代码可重用),jest 错误地导入了 ESM 版本的包而不是 CJS 版本。
\n使用案例:
\nali-oss
。ali-oss
将 CJS 和 ESM 分发到同一个包中,我可以在我的其他项目中毫无问题地模拟它(没有 monorepo)export
以下ali-oss
源之一中的令牌node_modules
为什么 Jest 在 monorepo 与普通 repo 中的行为不同?如何解决这个奇怪的笑话模块分辨率?
\ntsconfig.json:
\n{\n "compilerOptions": {\n …
Run Code Online (Sandbox Code Playgroud)