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

时间:2021-6-7 作者:qvyue

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

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

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。