小编Fah*_*qri的帖子

在 nx monorepo 中运行 Jest 时出错:SyntaxError:意外的标记“导出”

背景

\n

我有一个使用Nx构建的 monorepo 项目。该存储库包含我的后端项目的几个可重用库。这些包是从多个项目中收集的,以创建可重用的库。

\n

我使用 Jest 创建并运行我的 monorepo 中使用的单元测试。

\n

问题

\n

当我运行 jest 时,在某些测试中,它会抛出有关无法导入 .js 文件的错误export

\n

奇怪的是这些模块有一个 commonjs 版本,我可以在我的其他项目中毫无问题地模拟这些包,而无需 monorepo 结构。但是当我在 monorepo 项目中使用相同的代码时(我想让代码可重用),jest 错误地导入了 ESM 版本的包而不是 CJS 版本。

\n

使用案例:

\n
    \n
  • 我有一个内部使用的 blob 存储库ali-oss
  • \n
  • ali-oss将 CJS 和 ESM 分发到同一个包中,我可以在我的其他项目中毫无问题地模拟它(没有 monorepo)
  • \n
  • 当我将相同的库复制到新的 monorepo 中时,Jest 会抱怨export以下ali-oss源之一中的令牌node_modules
  • \n
\n

为什么 Jest 在 monorepo 与普通 repo 中的行为不同?如何解决这个奇怪的笑话模块分辨率?

\n

文件

\n

tsconfig.json:

\n
{\n  "compilerOptions": {\n …
Run Code Online (Sandbox Code Playgroud)

typescript jestjs nrwl-nx

10
推荐指数
1
解决办法
3963
查看次数

标签 统计

jestjs ×1

nrwl-nx ×1

typescript ×1