You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

html5QrCode调用getCameras报is not a function错误如何解决

错误产生原因
  1. 核心原因:getCameras() 是 Html5Qrcode 类的静态方法,只能通过类本身调用,你在实例化得到的html5QrCode对象上调用该方法,自然会抛出「不是函数」的类型错误。
  2. 次要诱因:如果你修正调用方式后仍然报错,说明你本地引入的html5-qrcode.min.js版本过低,v2.0.0之前的版本没有对外暴露这个静态方法。
修复步骤
  • 第一步:检查本地引入的库版本,若低于v2.0.0,先替换为v2.0.0及以上版本的资源文件
  • 第二步:将代码中html5QrCode.getCameras()的调用主体改为类本身,即写成Html5Qrcode.getCameras()
  • 补充注意:摄像头枚举、调用接口需要在HTTPS环境或localhost本地调试环境下运行,否则浏览器会拦截权限,直接进入失败回调分支
修正后可运行代码
<script src="/js/html5-qrcode.min.js"></script>
<script>
var html5QrCode = new Html5Qrcode("scanner-container");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
    html5QrCode.stop().then((ignore) => {
        // 扫码成功后的业务逻辑
    }).catch((err) => {
        console.log(err);
    });
};
const config = { fps: 10, qrbox: 250 };
// 调用类的静态方法枚举摄像头
Html5Qrcode.getCameras().then(devices => {
    if($(".scan-dom").hasClass("notVisible")){
        $(".scan-dom").removeClass("notVisible");
    }
    html5QrCode.start({ facingMode: "environment" }, config, qrCodeSuccessCallback);
}).catch(err => {
    console.log("No Camera Found");
    if(!$(".scan-dom").hasClass("notVisible")){
        $(".scan-dom").addClass("notVisible");
    }
    $(".noCameraMessage").removeClass("hide");
});
</script>

内容的提问来源于stack exchange,提问作者Rahul Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:51:19