You need to enable JavaScript to run this app. QuaggaJS网页条码扫描报Quagga.init不是函数错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

QuaggaJS网页条码扫描报Quagga.init不是函数错误如何解决

问题原因
  • 你使用的1.0.0-beta版本Quagga的CDN资源为ES模块导出格式,全局挂载的window.Quagga是模块容器对象,实际可调用的API全部挂载在Quagga.default属性下,直接调用Quagga.init会因为找不到对应方法抛出错误。
  • const Quagga = require('quagga').default是CommonJS模块化语法,仅在Node.js环境或经过前端打包工具处理的工程中可用,原生浏览器没有内置requireAPI,添加后必然报错,可直接删除该行代码。
修复方案

仅需要调整你的初始化代码,先从全局挂载的模块对象中拿到正确的Quagga实例即可,修改后的脚本部分如下:

<script type="text/javascript">
  // 从全局模块对象中取出正确的Quagga实例
  const Quagga = window.Quagga.default;
  Quagga.init({
    inputStream : {
      name : "Live",
      type : "LiveStream",
      target: document.querySelector('#interactive'),
      constraints: {
        width: 520,
        height: 400,
        facingMode: "environment"  //"environment" for back camera, "user" front camera
      }
    },
    decoder : {
       readers : ["code_39_reader"]
    }
  }, function(err) {
    if (err) {
      console.log(err);
      return
    }
    console.log("Initialization finished. Ready to start");
    Quagga.start();
    Quagga.onDetected(function(result) {
      console.log(result.codeResult.code);
    });
  });
</script>
注意事项
  • 浏览器摄像头权限仅对运行在localhost或者HTTPS协议的页面开放,HTTP公网环境会直接拒绝摄像头访问请求导致功能失效。
  • 若需要识别其他类型的条码,可修改decoder.readers配置项,添加对应格式的解码器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:15:06