jest-haste-map:Haste模块命名冲突

Vit*_*cho 10 javascript reactjs jestjs react-native

在我们的项目中,我们将react-native安装在两个工作区中(用于测试目的的根文件夹和库文件夹)。尝试测试应用程序(根文件夹)时,这将引发典型错误“ jest-haste-map:Haste模块命名冲突”。

项目结构:

.(rootProject)
+-- my-package
|   +-- package.json (workspace(*))
+-- package.json(workspace(*))

* has react-native as dependency
Run Code Online (Sandbox Code Playgroud)

我可以为移动设备进行编译,并提供以下配置:

.(rootProject)
+-- my-package
|   +-- package.json (workspace(*))
+-- package.json(workspace(*))

* has react-native as dependency
Run Code Online (Sandbox Code Playgroud)

出于笑话,我尝试了以下操作但未成功:

// metro.config.js
blacklistRE: blacklist([
   new RegExp(
     `^${path.resolve(__dirname, 'my-package/node_modules')}/.*$`,
   ),
]),
Run Code Online (Sandbox Code Playgroud)

jest.config是否有任何类似的配置?

编辑:

根项目(rootProject)的临时配置(无效的配置):

// jest.config.js
modulePathIgnorePatterns: [
  '<rootDir>/my-package/node_modules/react-native',
]
Run Code Online (Sandbox Code Playgroud)

注意:

my-package是一个git子模块,可以单独测试或与rootProject集成(具有自己的笑话配置)

小智 3

如果你的每个包都有一个react-native依赖项,你最终会得到两个副本,这可能会导致笑话的问题。相反,保留作为根项目中的依赖项,但将其移至peerDependencies子模块中(以及第二个副本以便devDependencies能够单独测试它)。

您是否使用 yalc 在本地集成您的子模块?这对我来说是导致同样错误的原因,通过.yalc从根项目中删除文件夹来解决。