h***@aliyun.com
h***@aliyun.com
  • 发布:2025-08-04 15:02
  • 更新:2025-08-08 15:56
  • 阅读:164

【报Bug】uni.scanCode nvue页面调用扫码组件iOS黑屏,安卓正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 15.4

HBuilderX类型: 正式

HBuilderX版本号: 4.75

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: iphone16

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

manifest.json 权限配置了:

"ios": {  
        "permissions": {  
          "camera": {  
            "description": "需要相机权限用于扫码"  
          }  
        },  
        "privacyDescription": {  
          "NSCameraUsageDescription": "扫码开门需要摄像头权限",  
          "NSPhotoLibraryUsageDescription": "需要访问相册以选择图片",  
          "NSPhotoLibraryAddUsageDescription": "需要访问相册以保存图片",  
          "NSFileProviderUsageDescription": "需要访问文件系统以存储应用数据",  
          "NSDocumentStorageUsageDescription": "需要存储应用日志和数据"  
        },  
        "capabilities": {  
          "entitlements": {  
            "com.apple.security.device.camera": true  
          },  
          "plists": {  
            "NSCameraUsageDescription": "扫码开门需要摄像头权限"  
          }  
        },  
        "info": {  
          "NSCameraUsageDescription": "扫码开门需要摄像头权限"  
        }  
      }

然后在nvue页面里面写

    const handleOnScanCode = () => {  
  uni.scanCode({  
    onlyFromCamera: true,  
    success: function (res) {  
      console.log('条码类型:' + res.scanType);  
      console.log('条码内容:' + res.result);  
    }  
  });  

    };

操作步骤:

预期结果:

实际结果:

bug描述:

在nvue页面调用扫码组件iOS黑屏,安卓正常
iOS运行发现会报错:

TypeError: this.$refs.barcode.cancel is not a function. (In 'this.$refs.barcode.cancel()', 'this.$refs.barcode.cancel' is undefined) __ERROR

2025-08-04 15:02 负责人:无 分享
已邀请:
h***@aliyun.com

h***@aliyun.com (作者)

有时候编辑器勾起来了
还要看看manifest.json里面的
"modules": {
"Camera": {},
"Barcode": {}
},

这个都要有,不然等于没有勾选

  • DCloud_UNI_yuhe

    解决了吗?看着好像不像是manifest中配置的问题,是 ref 的问题?

    2025-08-12 15:13

  • h***@aliyun.com (作者)

    回复 DCloud_UNI_yuhe: 解决了,因为项目动态配置manifest.json,所以manifest.json没改动到导致

    2025-08-14 15:20

要回复问题请先登录注册