重新部署Web应用后出现TypeError: QRCode.drawBitArray is not a function错误求助
解决TypeError: QRCode.drawBitArray is not a function问题及二维码库推荐
问题原因分析
我之前部署项目时也碰到过一模一样的报错!大概率是版本不一致搞的鬼——你本地开发用的node-qrcode版本和新服务器上安装的版本不匹配。drawBitArray应该是库的内部方法(官方没对外公开),要么在新版本里被移除了,要么就是旧版本才有的私有用法,直接调用自然会报错。
解决方案
- 锁定依赖版本:打开你的
package.json,把node-qrcode的版本号固定成你本地开发时用的那个(比如之前用的是1.4.4,就写成"node-qrcode": "1.4.4"),然后在新服务器上重新执行npm install(或yarn install),确保安装的版本和本地完全一致。 - 改用官方公开API:如果不想锁死版本,建议换掉对
drawBitArray的调用,用库提供的正规方法。比如根据你的需求选:- 生成Base64图片:
QRCode.toDataURL(text, options, callback) - 生成Buffer:
QRCode.toBuffer(text, options, callback) - 生成字符串格式的二维码:
QRCode.toString(text, options, callback)
- 生成Base64图片:
可返回行长度数组的二维码库推荐
如果需要直接获取二维码的行长度数组(或者底层bit矩阵来计算行长度),推荐这几个库:
- qrcode-generator:提供非常底层的二维码生成能力,能直接拿到二维码的bit矩阵数据,你可以遍历每一行统计有效像素长度,轻松转成行长度数组。
- qr-image:不仅支持生成多种格式的二维码文件/流,还能获取原始像素矩阵,基于这个矩阵可以快速计算每一行的有效长度。
- 其实你在用的
node-qrcode也能实现:通过自定义renderer来获取内部的bit矩阵,自行处理成行长度数组,不用换库就能满足需求。
内容的提问来源于stack exchange,提问作者Alessandro Zago
相关产品推荐
相关产品推荐

