React Native使用expo-camera安卓启动报错:Cannot read property 'CameraType' of undefined
解决 Expo Camera 安卓启动崩溃及
CameraType 未定义问题 1. 修正导入方式
从 Expo Camera v13+ 版本开始,CameraType 不再支持直接从 expo-camera 导入,它已变为 Camera 的静态属性。替换你的导入代码:
// 错误写法 // import { Camera, CameraType } from 'expo-camera'; // 正确写法 import { Camera } from 'expo-camera'; const { CameraType } = Camera; // 初始化状态时使用 const [cameraType, setCameraType] = useState(CameraType.back); // 或者直接写 Camera.CameraType.back
2. 核对依赖版本兼容性
确保 expo-camera 版本与你当前使用的 Expo SDK 完全匹配,版本不兼容会导致模块加载异常。例如:
- Expo SDK 49 →
expo-camera@13.4.4 - Expo SDK 50 →
expo-camera@14.1.1
如果版本不匹配,重新安装对应版本:
npm uninstall expo-camera npm install expo-camera@[对应SDK的兼容版本号]
3. 验证安卓配置与权限
- 检查
android/build.gradle中的编译版本配置,确保compileSdkVersion和targetSdkVersion不低于 33:
buildscript { ext { compileSdkVersion = 33 targetSdkVersion = 33 minSdkVersion = 21 } }
- 在
app.json中确认已声明相机权限:
{ "expo": { "permissions": ["CAMERA", "RECORD_AUDIO"], "android": { "permissions": ["android.permission.CAMERA", "android.permission.RECORD_AUDIO"] } } }
4. 清除缓存并重建项目
缓存异常可能导致模块加载失败,执行以下步骤:
- 删除
node_modules和package-lock.json - 重新安装依赖:
npm install - 清除 Expo 缓存:
expo r -c - 重新构建安卓项目:
expo run:android
5. 确认设备权限
手动检查测试设备的应用权限设置,确保已为你的应用授予相机权限。
内容的提问来源于stack exchange,提问作者gab06
相关产品推荐
相关产品推荐

