DevEco Studio鸿蒙模拟器(6.0.1)在uni-app中选择相机报错"chooseImage:fail Cannot read property resultCode of undefined"

DevEco Studio鸿蒙模拟器(6.0.1)在uni-app中选择相机报错"chooseImage:fail Cannot read property resultCode of undefined"

问题描述

DevEco Studio鸿蒙模拟器(6.0.1),选择相机报错 {errMsg: "chooseImage:fail Cannot read property resultCode of undefined"}

uni.chooseImage({
    count: 9, // 最多选择9张图片
    sizeType: ['original','compressed'], // 支持原图和压缩图
    sourceType: ['album', 'camera'], // 支持从相册选择或使用相机拍照
    success: async (res) => {
        ...
    },
    fail: err => {
        err.errMsg.includes('cancel') ? console.log('用户取消了操作') : console.error('选择图片失败:', err);
        // 选择相机进到了这里,输出:
        // {errMsg: "chooseImage:fail Cannot read property resultCode of undefined"}
    },
    complete: function () {
        console.log('操作完成,关闭遮罩层');
    }
});

看资料说是不用另外再申请权限的,目前打开相册是正常的,就是相机无法唤醒。

图片

Image 1 Image 2


更多关于DevEco Studio鸿蒙模拟器(6.0.1)在uni-app中选择相机报错"chooseImage:fail Cannot read property resultCode of undefined"的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

实测模拟器异常,真机功能正常,模拟器应该是无法模拟摄像头,这个报错符合预期,但内容可以优化错误提示

更多关于DevEco Studio鸿蒙模拟器(6.0.1)在uni-app中选择相机报错"chooseImage:fail Cannot read property resultCode of undefined"的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


该问题请在专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据问题描述和知识库内容,该问题主要源于鸿蒙平台对相机权限的特殊处理。
原因分析:

鸿蒙平台需要显式声明相机权限,不同于Android/iOS的自动处理机制
uni.chooseImage在鸿蒙模拟器上可能存在兼容性适配问题
错误"Cannot read property resultCode of undefined"表明底层API调用失败

解决方案:

权限配置:

在manifest.json中添加鸿蒙相机权限声明:
“permissions”: {
“camera”: {
“reason”: “需要使用相机拍照”
}
}
或在harmony-configs/module.json5中配置:
“module”: {
“abilities”: [{
“permission”: [“ohos.permission.CAMERA”]
}]
}

前置权限申请:
// 先请求相机权限
uni.authorize({
scope: ‘scope.camera’,
success: () => {
uni.chooseImage({ /* 原有参数 */ });
},
fail: () => {
console.error(‘相机权限被拒绝’);
}
});

替代方案:

尝试使用plus.camera API(需条件编译):
// #ifdef APP-HARMONY
plus.camera.getCamera().captureImage((path) => {
// 处理图片路径
});
// #endif

环境检查:

确认HBuilderX版本≥4.61(对应DevEco Studio 5.0.7.100+)
检查模拟器API级别是否≥12(推荐API 20)

参考文档:uni-app鸿蒙开发指南 和 权限管理文档
若仍无法解决,建议尝试真机调试或使用插件市场的自定义相机插件。 内容为 AI 生成,仅供参考

这个问题是由于鸿蒙模拟器(HarmonyOS)环境下,uni-app的uni.chooseImage API在调用相机时,未能正确处理返回结果导致的。错误信息Cannot read property resultCode of undefined表明,API期望从某个对象中读取resultCode属性,但该对象为undefined

原因分析:

  1. 模拟器兼容性问题:鸿蒙模拟器(特别是6.0.1版本)可能对uni-app的相机调用支持不完善。虽然相册功能正常,但相机模块在模拟器中可能存在兼容性差异。
  2. 权限或配置缺失:尽管文档提示无需额外申请权限,但模拟器的相机功能可能需要特定的配置或模拟器镜像支持(例如:是否启用了相机硬件模拟)。
  3. API回调异常:在调用系统相机时,鸿蒙系统可能未按预期返回结果对象,导致resultCode读取失败。

解决方案:

  1. 检查模拟器设置

    • 确认鸿蒙模拟器镜像是否支持相机功能。在DevEco Studio的模拟器管理中,选择带有相机功能的镜像(如P40 Pro等设备镜像),并确保模拟器已启用相机权限(可在模拟器设置中查看)。
    • 尝试重启模拟器或更换其他鸿蒙版本镜像测试。
  2. 降级或调整API调用

    • 暂时避免在模拟器中使用sourceType: ['camera']。可先仅使用相册功能(sourceType: ['album'])进行开发调试。
    • 如果必须测试相机,建议使用真机调试。鸿蒙真机通常能正常调用相机。
  3. 捕获异常并降级处理

    • fail回调中增加更详细的错误处理,避免应用崩溃。例如:
      fail: err => {
          if (err.errMsg.includes('resultCode')) {
              console.warn('鸿蒙模拟器相机兼容性问题,建议使用真机测试');
          }
          // 其他处理
      }
回到顶部