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
相关产品推荐
相关产品推荐

