Expo EAS构建报错求助:expo-camera类型不匹配问题
解决EAS构建expo-camera时的Kotlin类型不匹配错误
这个错误是expo-camera库内部的Kotlin代码存在可空类型与非空类型不匹配的问题,并非你的业务代码导致。以下是具体修复方案:
升级expo-camera到最新版本
官方大概率会在后续版本修复这类类型错误,这是最直接的解决方式。执行命令更新依赖:npx expo install expo-camera@latest更新完成后重新执行EAS构建。
同步Expo SDK与依赖版本
如果升级expo-camera后问题仍存在,检查你的Expo SDK版本是否与expo-camera兼容。执行命令升级整个项目的SDK及依赖到最新兼容版本:npx expo upgrade按照提示完成升级后再尝试构建。
使用patch-package临时修复(不推荐长期使用)
若暂时无法升级依赖,可通过patch-package修改库的内部代码来修复类型错误:- 安装patch-package工具:
npm install patch-package --save-dev - 找到
node_modules/expo-camera/android/src/main/java/expo/modules/camera/tasks/ResolveTakenPicture.kt文件的第146行,将可空的String?类型转换为非空String。例如:// 安全处理空值的写法 val targetPath: String = someNullableString ?: "" // 或强制非空(注意:若实际值为空会抛出空指针异常,谨慎使用) val targetPath: String = someNullableString!! - 生成补丁文件:
npx patch-package expo-camera - 重新执行EAS构建,补丁会自动应用到构建流程中。
- 安装patch-package工具:
你的业务代码(CameraView组件调用、takePicture函数)本身没有问题,已经正确处理了uri为空的情况,无需修改。
内容的提问来源于stack exchange,提问作者Vinicius Bretzke Müller
相关产品推荐
相关产品推荐

