如何解决对于使用链接的模块包括对父级的peerDependencies的项目,使用笑话进行测试的正确配置是什么?
我正在使用Typescript Expo projectA和从projectA链接到npm的libB。
- LibB具有react-native库和其他一些与RN相关的库,例如peerDependencies和devDependencies。
- ProjectA已正确安装libB对等项依赖项(react-native等)
该项目在修改了Metro配置后可以正常工作,以使其考虑链接的libB和peerDependencies,但对于Jest测试,它失败并出现下一个错误:
Invariant Violation: __fbBatchedBridgeConfig is not set,cannot invoke native modules
at invariant (../libB/node_modules/invariant/invariant.js:40:15)
at Object.<anonymous> (../libB/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js:166:3)
at Object.<anonymous> (../libB/node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js:13:23)
从错误中可以清楚地看出问题是Jest正在加载并尝试使用libB node_modules
中的react-native版本,但是我想要的是Jest使用projectA中的版本。我试图配置projectA jest.config.js
(在projectA的根目录下创建),以使其排除libB node_modulues/react-native
lib,但无法正常工作。
这是我的项目A / jest.config.js:
module.exports = {
preset: "jest-expo",modulePathIgnorePatterns: [
"<rootDir>/node_modules/libB/node_modules/react-native",],transformIgnorePatterns: [
"<rootDir>/node_modules/libB/node_modules/((react-native|invariant)/)","<rootDir>/node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)",verbose: true,};
如您所见,我在react-native
中添加了modulePathIgnorePatterns
作为排除项,因此Jest不使用该反应本机lib,因为它直接存在于projectA node_modules
中。我还在transformIgnorePatterns中添加了相同的路径,因此Jest不会尝试转换该本地反应目录的代码,因为已经告知它必须在projectA node_modules
中对它进行编码。
我不太熟悉此配置,所以我不知道我在做什么错。
有人能帮助我或者提示我我的错误或实现目标的正确方法吗?预先谢谢你。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。