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

Expo-Camera报错求助:TypeError: 无法访问_expoCamera.CameraType.back

解决Expo Camera报错:TypeError: undefined is not an object (evaluating '_expoCamera.CameraType.back')

可能的原因及修复方案

1. 调整CameraType的导入与使用方式

在expo-camera 12.3.0版本中,CameraType并非独立导出项,而是挂载在Camera对象下。修改代码如下:

  • 替换导入语句:
import { Camera } from 'expo-camera';
  • 所有用到CameraType的地方改为Camera.CameraType:
const [type, setType] = useState(Camera.CameraType.back);

function toggleCameraType() {
  setType((current) => (
    current === Camera.CameraType.back ? Camera.CameraType.front : Camera.CameraType.back
  ));
}

2. 确保Expo SDK与expo-camera版本兼容

expo-camera版本必须和项目Expo SDK版本匹配。检查package.json中的版本对应关系,执行命令同步兼容版本:

expo install expo-camera@12.3.0

3. 清除缓存并重启项目

Expo Go缓存可能导致模块加载异常:

  • 彻底关闭并清除Expo Go后台进程
  • 终端执行命令强制清除项目缓存后重启:
expo start -c

4. 优化组件挂载逻辑(适配navigation跳转场景)

通过navigation.navigate跳转时,将权限请求放在useEffect中初始化,避免初始渲染时权限状态未定义:

import { Camera } from 'expo-camera';
import { useState, useEffect } from 'react';
// 其他导入保持不变

export default function CameraScreen() {
  const [type, setType] = useState(Camera.CameraType.back);
  const [permission, setPermission] = useState(null);
  const [requestPermission] = Camera.useCameraPermissions();

  useEffect(() => {
    requestPermission().then(res => setPermission(res));
  }, []);

  if (!permission) {
    return <View />;
  }

  // 后续权限判断、相机渲染逻辑保持不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:24:35