小程序canvasToTempFilePath调用报错create bitmap failed
wx.canvasToTempFilePath(OBJECT, this)
把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径。在自定义组件下,第二个参数传入组件实例this,以操作组件内 <canvas/> 组件。在性能不强的安卓机上,调用时会出现这一报错
解决办法: 延迟调用或者错误回调中进行处理。
延迟调用
wx.draw(false, () => {
setTimeout(()=>{
wx.canvasToTempFilePath();
}, 200);
});
wx.draw()是一个异步执行的api,canvasToTempFilePath需要在其回调中执行。延迟200毫秒一般就可以解决这个问题。
当这个api只执行一次时延迟200毫秒其实无所谓,但是多次调用时,这个延迟也浪费了不少时间。对于性能强大的手机,这也是一种浪费,一般只有性能较弱的安卓机才会出现这个问题。所以我更建议大家使用下面一个。
错误回调处理
canvasToTempFilePath本身也是异步api,有错误回调可以使用。
let count = 0;
function getTempFile(otherOptions) {
wx.canvasToTempFilePath({
...otherOptions,
success: () => {},
fail: (error) => {
const { errMsg } = error;
// 可能会有其他报错 还是拦截一下吧
if ( errMsg === '具体报错' ) {
// 一次不行再试一遍 两次都不过就放弃吧
count += 1;
if (count < 3) {
getTempFile(otherOptions);
}
else {
// 错了这么多遍基本没救了
}
}
},
});
}
小程序上传多张图片,开发环境打开调试功能时, 能正常上传,关闭调试上传失败
你的上传域名是否和小程序配置的上传文件域名一致,包括请求协议需要https
非调试状态下域名必须一致
is not in navigateToMiniProgramAPPidList
每个小程序可跳转的其他小程序数量限制为不超过 10 个
从 2.4.0 版本以及指定日期(具体待定)开始,开发者提交新版小程序代码时,如使用了跳转其他小程序功能,则需要在代码配置中声明将要跳转的小程序名单,限定不超过 10 个,否则将无法通过审核。该名单可在发布新版时更新,不支持动态修改。配置方法详见 配置。调用此接口时,所跳转的 appId 必须在配置列表中,否则回调 fail appId "${appId}" is not in** navigateToMiniProgramAppIdList**
。
在app.json
中配置
"navigateToMiniProgramAppIdList": [
"wxbd687630cd02ce1d"
]
网友评论