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

JS扫码代码在Codesandbox正常,本地/服务器报qrcode重复声明错误

解决方案

问题根源

错误提示明确指出qrcode标识符被重复声明,原因如下:

  • 引入的qr_packed.js脚本会在全局作用域中直接创建一个名为qrcode的变量;
  • 你的qrCodeScanner.js第一行用const qrcode = window.qrcode;再次声明了同名变量,违反了ES6中const/let的作用域规则(同一作用域内不允许重复声明相同标识符)。

在线代码编辑器能正常运行,是因为它的环境对全局变量做了特殊兼容或隔离处理,并非代码本身没有问题。

修复步骤

不需要任何服务器端配置,只需修改qrCodeScanner.js的第一行:

方案1:移除重复声明

直接删除第一行的const qrcode = window.qrcode;,后续代码中直接使用全局的qrcode变量即可——因为qr_packed.js已经把它挂载到全局了。

方案2:兼容式赋值(可选)

如果担心全局变量可能不存在,可以修改为:

// 移除原第一行,替换为以下代码
const qrcodeInstance = window.qrcode;
// 后续代码中把所有`qrcode`替换为`qrcodeInstance`

额外检查

确认HTML中没有重复引入qr_packed.js——重复引入也会导致全局变量重复,但你的代码里只引入了一次,所以主要问题还是变量重复声明。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:25:18