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

2 回复

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

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


这个问题是由于鸿蒙模拟器(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('鸿蒙模拟器相机兼容性问题,建议使用真机测试');
          }
          // 其他处理
      }
回到顶部