我正在尝试开发一种使用Ionic Native Qrcode Scanner插件扫描QR码的Ionic Progressive Web App(PWA):https://ionicframework.com/docs/native/qr-scanner/ . 在移动电话上的浏览器中,当qr代码扫描开始时,需要一段时间,但在一段时间后在控制台上返回错误:

core.js:1449 ERROR RangeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': Out of memory at ImageData creation
  at getCurrentImageData (plugin.min.js:571)
  at thisScanCycle (plugin.min.js:693)
  at t.invokeTask (polyfills.js:3)
  at Object.onInvokeTask (core.js:4751)
  at t.invokeTask (polyfills.js:3)
  at r.runTask (polyfills.js:3)
  at e.invokeTask (polyfills.js:3)
  at i.isUsingGlobalCallback.invoke (polyfills.js:3)
  at n (polyfills.js:3)

接下来是另一个错误:

Uncaught Error: This source format is not supported in your environment, you need to pass an image buffer with width and height

在真实计算机的浏览器(在我的情况下是MacBook Pro)中运行的相同代码可以正常工作,并且当它在浏览器中失败的同一手机上作为Android应用程序执行时可以正常工作 . 另一个奇怪的事情是你需要距离很多(40厘米)扫描QR而不是几厘米的Android应用程序 . 我的猜测是摄像机以两种不同的方式初始化,而在移动浏览器中,它会返回一个太大而导致内存故障的图像 .

准系统代码可以在这里找到:https://github.com/mottolini/ionic-pwa-qr