Expo项目集成react-native-vision-camera报CameraView原生模块为空求助
解决Expo环境下react-native-vision-camera "Native Module 'CameraView' was null"问题
排查与修复步骤:
匹配版本兼容性
Expo SDK46对应React Native 0.69.x,而react-native-vision-camera 2.15.1对该RN版本兼容性不佳。建议降级到适配SDK46的版本(如2.13.0,明确支持RN0.69):expo install react-native-vision-camera@2.13.0执行后重新运行
expo prebuild和iOS目录下的pod install。验证原生代码生成情况
- 检查iOS项目的
Pods/Manifest.lock,确认存在react-native-vision-camera条目且版本匹配; - 查看Android项目
settings.gradle,确认包含以下配置:include ':react-native-vision-camera' project(':react-native-vision-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vision-camera/android') - 若iOS
Podfile未自动添加依赖,手动补充后重新执行pod install:pod 'react-native-vision-camera', :path => '../node_modules/react-native-vision-camera'
- 检查iOS项目的
清理缓存后重建项目
- 清除Expo缓存:
expo r -c - 清除iOS缓存并重新安装依赖:
cd ios && rm -rf Pods Podfile.lock && pod install && cd .. - 清除Android缓存:
cd android && ./gradlew clean && cd ..
完成后重新启动项目。
- 清除Expo缓存:
确认权限配置生效
检查iOS项目Info.plist,确认已自动添加相机、麦克风权限描述(若未添加则手动补充):<key>NSCameraUsageDescription</key> <string>$(PRODUCT_NAME) needs access to your Camera.</string> <key>NSMicrophoneUsageDescription</key> <string>$(PRODUCT_NAME) needs access to your Microphone.</string>同时确认Android项目
AndroidManifest.xml包含对应权限:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />使用Expo Dev Client而非Expo Go
react-native-vision-camera属于原生模块,无法在Expo Go中运行,必须通过expo run:ios或expo run:android启动Expo Dev Client进行测试。
内容的提问来源于stack exchange,提问作者russian_cosmonaut
相关产品推荐
相关产品推荐

