微信小程序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实例还没有导致的问题,不知道对不对,有理解的可以评论回复下。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容