jest-haste-map:加速模块命名冲突

Posted

技术标签:

【中文标题】jest-haste-map:加速模块命名冲突【英文标题】:jest-haste-map: Haste module naming collision 【发布时间】:2020-03-21 01:34:55 【问题描述】:

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

项目结构:

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

* has react-native as dependency

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

// metro.config.js
blacklistRE: blacklist([
   new RegExp(
     `^$path.resolve(__dirname, 'my-package/node_modules')/.*$`,
   ),
]),

开玩笑,我尝试了以下方法但没有成功:

// jest.config.js
modulePathIgnorePatterns: [
  '<rootDir>/my-package/node_modules/react-native',
]

jest.config 有类似的配置吗?

编辑:

根项目(rootProject)的搞笑配置(那个不行):

module.exports = 
  roots: ['<rootDir>', '<rootDir>/my-package/__mocks__'],
  preset: 'react-native',
  snapshotSerializers: ['enzyme-to-json/serializer'],
  moduleNameMapper: 
    '\\.(jpg|jpeg|png|gif|svg)$':
      '<rootDir>my-package/__mocks__/fileMock.js',
  ,
  setupFiles: ['./jest.setup.js'],
  testMatch: ['<rootDir>/src/**/*.spec.js'],
  transformIgnorePatterns: [
    'node_modules/(?!@asseco|@react-|react-|victory|rn-placeholder|redux-persist).+\\.js$',
  ],
  coveragePathIgnorePatterns: [
    '<rootDir>/node_modules',
    '<rootDir>/my-package',
  ],
  modulePathIgnorePatterns: [
    '<rootDir>/my-package/node_modules/react-native',
  ]
  coverageThreshold: 
    global: 
      branches: 80,
      functions: 80,
      lines: 80,
      statements: 80,
    ,
  ,
  testResultsProcessor: '<rootDir>/node_modules/jest-html-reporter',
  coverageDirectory: '<rootDir>/reporters/coverage',

注意:

my-package是一个git子模块,可以单独测试也可以和rootProject集成(有自己的jest配置)

【问题讨论】:

你能发布你的整个 jest.config 吗? 【参考方案1】:

如果您的每个包都具有 react-native 依赖项,那么您最终会得到两个副本,这可能会导致开玩笑的问题。而是将 at 作为根项目中的依赖项保留,但将其移至子模块中的 peerDependencies (并将第二个副本移至 devDependencies 以便能够单独测试它)。

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

【讨论】:

以上是关于jest-haste-map:加速模块命名冲突的主要内容,如果未能解决你的问题,请参考以下文章

jest-haste-map: Haste 模块命名冲突 (AWS, RN)

如何修复 React Native 错误“jest-haste-map:Haste 模块命名冲突”?

MFC 加速器资源 ID 冲突?

EventBus 引用

种族平权运动加速 GithubGo 废除 Blacklist 命名,技术政治正确?

安装PHP XCache缓存加速模块