微信小程序canvasToTempFilePath: fail canvas is empty问题记录

今天突然收到反馈说小程序端的二维码不显示了,排查发现报了下面的错误


image.png

搜索了一番,又对比了自己的代码,发现很多提到的解决方法都是说要在canvasToTempFilePath的第二个参数传入this(自定义组件实例),但我的代码已经是传有了的,另外还有说是要在 canvas 的 渲染函数 draw 中的回调函数,我也是这么做了,但为什么还是报这个错呢,而且这个问题并不是所有手机都存在这个问题,查找了半天,最后通过下面方式算是解决了:

setTimeout(() => {
  ctx.draw(false, setTimeout(() => {
    uni.canvasToTempFilePath({
      canvasId: this.cid,
      success: res => {
        options.success && options.success(res.tempFilePath)
      },
    fail: error => {
      options.fail && options.fail(error)
    }
    }, this)
  },300))
}, 200)

就是在draw外面和draw回调函数中增加setTimeout延迟时间,初步猜测是由于渲染完成了,但是canvas实例还没有导致的问题,不知道对不对,有理解的可以评论回复下。

你可能感兴趣的:(微信小程序canvasToTempFilePath: fail canvas is empty问题记录)