gpt4 book ai didi

javascript - Jest 急速 map : Haste module naming collision

转载 作者:行者123 更新时间:2023-12-01 14:46:34 25 4
gpt4 key购买 nike

在我们的项目中,我们在两个工作区(用于测试目的的根文件夹和库文件夹)中安装了 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 ,我尝试了以下方法但没有成功:

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

jest.config 有类似的配置吗?

编辑:

根项目(rootProject)的 Jest 配置(不起作用的那个):

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 配置)

最佳答案

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

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

关于javascript - Jest 急速 map : Haste module naming collision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59037272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com