You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用Expo+TypeScript开发React Native Android应用时,调用相机遭遇Cannot find native module 'ExpoCamera'错误

Expo+TypeScript开发React Native Android应用时,调用相机遭遇Cannot find native module 'ExpoCamera'错误

嘿,我之前也碰到过这个坑,给你整理几个大概率能解决的方案,你挨个排查下:

  • 确认expo-camera依赖安装正确
    先打开项目的package.json,看看dependencies里有没有expo-camera这一项:

    • 要是没有,直接执行npx expo install expo-camera安装,一定要用expo的install命令,它会自动匹配你当前Expo SDK的对应版本,避免版本不兼容的问题。
    • 要是已经有了,那就删掉node_modules文件夹和package-lock.json(或yarn.lock),然后重新执行npx expo install重装所有依赖,有时候依赖缓存会搞出这种模块找不到的幺蛾子。
  • 检查SDK与相机包的版本兼容性
    确保expo-camera的版本和你项目的Expo SDK版本完全匹配,比如你用的是Expo SDK 49,就别装SDK 50对应的camera包,版本不匹配是触发这个native模块错误的常见原因。你可以直接对比package.jsonexpoexpo-camera的版本号,或者回忆下安装相机包时有没有版本不兼容的报错。

  • 清除Expo缓存重启项目
    执行npx expo start -c清除Expo的缓存后重启项目,这个操作能解决很多奇奇怪怪的模块加载问题,我每次碰到模块找不到的问题都会先试这个。

  • 检查代码导入是否正确
    你代码里的导入语句是import { CameraView, CameraType, useCameraPermissions } from 'expo-camera';对吧?仔细检查下有没有拼写错误,比如把expo-camera写成expo-cameras这种低级错误,虽然简单但很容易中招。

  • Android设备/模拟器的额外检查

    • 如果用物理Android设备测试,确保你手机上装的是最新版本的Expo Go App,旧版本的Expo Go可能不支持你当前用的expo-camera版本。
    • 如果用模拟器测试,先把模拟器里的Expo Go删掉重装,或者换个模拟器镜像试试,有时候模拟器的缓存也会导致模块加载失败。

另外看你贴的代码里toggleCameraFacing函数没写完,给你补个完整的实现,方便你测试:

function toggleCameraFacing() {
  setFacing(current => current === 'back' ? 'front' : 'back');
}

你按照上面的步骤挨个试下来,应该就能解决这个Cannot find native module 'ExpoCamera'的错误了,要是还有问题可以再贴出更详细的报错信息或者项目配置细节~

备注:内容来源于stack exchange,提问作者Purnendu Prabhat

火山引擎 最新活动