全新Expo项目引入RNUI后try代码块内抛模块缺失错误如何解决?
问题原因
- 关于
nodeModulesPath字段报错:该配置项在Expo SDK 46及以上版本已被废弃,新版Expo的配置校验规则会直接拦截无效字段,导致构建失败。 - 关于try catch包裹的代码仍抛出依赖找不到错误:React Native使用的Metro打包器会在构建阶段提前完成所有依赖的静态解析,不会等到代码运行到对应行才加载模块。因此代码还没执行到运行时的try catch逻辑,构建阶段就已经因为找不到依赖抛出错误。旧版本Expo可以正常运行是因为旧版Metro的依赖解析规则更宽松,或是你使用的旧版RNUI本身已经完成了可选依赖的构建适配。
解决方法
修复app.json校验报错
- 打开项目根目录的
app.json文件,直接删除nodeModulesPath对应的配置行即可,该字段已无实际作用。
修复react-native-haptic-feedback依赖找不到报错
可根据你的使用需求二选一:
方案一(无需安装额外依赖,不需要使用RNUI震动反馈功能时推荐)
- 在项目根目录新建或编辑
metro.config.js,添加如下配置,让Metro忽略该依赖的解析:
const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.blockList = [/react-native-haptic-feedback/]; module.exports = config;
- 配置完成后执行
npx expo start --clear清除缓存重启开发服务即可。
方案二(安装对应依赖,需要使用RNUI震动反馈功能时选择)
- 执行命令安装对应的可选依赖:
npx expo install react-native-haptic-feedback - 安装完成后重启开发服务即可正常运行。
内容的提问来源于stack exchange,提问作者Fedor Moiseev
相关产品推荐
相关产品推荐

