Jest测试模拟react-native-device-info时报Cannot find module错误如何解决
问题原因
这个报错是Jest在执行mock逻辑前,默认会先查找react-native-device-info的真实模块路径,找不到就会抛出解析错误。
解决方法
方案1:安装真实依赖(推荐)
如果你的项目本身确实依赖这个库,只是测试时需要mock,直接安装dev依赖即可:npm install react-native-device-info --save-dev
安装完成后重新运行测试即可。方案2:使用虚拟mock
如果项目不需要真实使用这个库,仅测试时需要mock,可以给jest.mock添加第三个参数开启虚拟mock,跳过真实模块查找:
修改testenv.js里的mock代码为:
jest.mock('react-native-device-info', () => { return { getModel: jest.fn(), getVersion: jest.fn(), getBuildNumber: jest.fn(), getBundleId: jest.fn(), }; }, { virtual: true });
- 方案3:修正Jest配置
如果已经安装了依赖还是报错,检查jest.config.js(或package.json里的jest字段)的配置:
- 确保添加了react-native预设
- 确保moduleDirectories包含node_modules
配置示例:
module.exports = { preset: "react-native", moduleDirectories: ["node_modules", "src"], // 其余原有配置保持不变 }
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

