You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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. 清除缓存并重建项目

缓存异常可能导致模块加载失败,执行以下步骤:

  1. 删除 node_modules 和 package-lock.json
  2. 重新安装依赖:npm install
  3. 清除 Expo 缓存:expo r -c
  4. 重新构建安卓项目:expo run:android

5. 确认设备权限

手动检查测试设备的应用权限设置,确保已为你的应用授予相机权限。

内容的提问来源于stack exchange,提问作者gab06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:10:57