收藏
回答

调用云函数生成小程序码不返回结果

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wxec513f8ddf2600ad 2.6.6

云函数调用小程序生成api,function name:getNewQrCode


const cloud = require('wx-server-sdk')

cloud.init()

exports.main = async (event, context) => {

  try {

    const result = await cloud.openapi.wxacode.getUnlimited({

      scene: event.scene,

      page: event.path

    })

    return result

  } catch (err) {

    return err

  }

}


-----------------------------------------------------------


小程序端调用代码:

wx.cloud.callFunction({

      name: 'getNewQrCode',

      data: param

    }).then(res => {

        let data

        if (res.result.errCode == 0) {

          if (dataType == 'base64') {

            data = `data:image/jpeg;base64,${wx.arrayBufferToBase64(res.result.buffer)}`

          }

          if (dataType == 'buffer') {

            data = res.result.buffer

          }

          if (data) {

            resolve(data)

          } else {

            reject('unknow data type')

          }

        } else {

          reject(res.result.errMsg)

        }

    }).catch(err => {

      console.log('云端错误:', err)

      reject(err)

    })


----------------------------------------------------


大部分用户能返回正确结果,但是,一旦一个用户不能返回正确结果,那他的返回的结果,永远都是

(大概4/5的用户正确,1/5的用户永远不正确)


Error: errCode:
-404012 error while waiting for the result
errMsg: cloud.callFunction:fail error while waiting for the result; at cloud.callFunction api;
    at new u (VM135 [publib]:1)
    at d (VM135 [publib]:1)
    at Object.t.returnAsFinalCloudSDKError (VM135 [publib]:1)
    at Function.<anonymous> (VM135 [publib]:1)
    at VM135 [publib]:1
    at Timeout._onTimeout (VM135 [publib]:1)
    at listOnTimeout (internal/timers.js:535)
    at processTimers (internal/timers.js:479)


查看云函数日志:

2019-05-13T06:04:43.431Z  生成了二维码数据: { contentType: 'image/jpeg',

  buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 43 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ... >,

  errMsg: 'openapi.wxacode.getUnlimited:ok',

  errCode: 0 }

执行时间: 379.85ms内存使用: 2.38 MB


也就是说云端是执行成功的,也返回结果的


错误信息:fail error while waiting for the result

但是这个用户永远也等不到返回的结果,最后超时后抛错


是云开发平台的问题还是其他设置方面的问题呢?

不知道有没有遇到同样问题的?



回答关注问题邀请回答
收藏

3 个回答

  • 邓坤力
    邓坤力
    2019-05-14

    感谢反馈,这是安卓 7.0.4 版本优化引入的 bug,云函数回包过大(约超过600K)时会出现报错的情况,我们将会尽快修复。

    2019-05-14
    有用 1
    回复 6
    • 2019-05-14

      是不是要到下一版本的安卓版微信才能修复?我们线上的小程序已经用了这个云函数,影响挺大的,很多用户不能正常使用这个功能

      2019-05-14
      2
      回复
    • 布丁达人
      布丁达人
      2019-05-16

      遇到了同样的问题 微信7.0.4版本云开发数据量大时候获取不到

      2019-05-16
      1
      回复
    • 2019-05-17回复布丁达人

      想办法让返回数据量小于600k即可解决

      2019-05-17
      回复
    • 2019-05-20回复

      我们生成的图片也没这么大

      2019-05-20
      回复
    • 大雁
      大雁
      2020-01-07
      安卓 7.0.10 依然会出现,不知道有修复了没
      2020-01-07
      回复
    查看更多(1)
  • 带鱼Yuiffy🤔
    带鱼Yuiffy🤔
    2019-12-12

    遇到同样问题,测试的一台安卓机(三星S9+)一直报这个错,我的安卓机就正常。云函数返回的json也不大,根本没到600k

    2019-12-12
    有用 2
    回复 1
    • 带鱼Yuiffy🤔
      带鱼Yuiffy🤔
      2020-01-19
      解决了,我这边是上传的包太大,看文档说好像是超过10K的包都建议不要直接传,我改成用云存储存了。
      2020-01-19
      回复
  • Coande
    Coande
    2019-06-26

    遇到同样的问题,开发工具中正常,真机就报错了

    2019-06-26
    有用
    回复 5
    • Coande
      Coande
      2019-06-26

      解决了,云函数中不要直接返回 buffer ,返回处理成 base64 的数据就正常了

      'data:image/png;base64,' + result.buffer.toString('base64')


      2019-06-26
      1
      回复
    • zzzzz
      zzzzz
      2020-01-17回复Coande
      有完整的云函数代码片段吗??谢谢
      2020-01-17
      回复
    • Coande
      Coande
      2020-01-22回复zzzzz
      2020-01-22
      回复
    • 2020-07-09回复Coande
      你好 为什么我在onLaunch options中query.scene一直是空呢
      2020-07-09
      回复
    • 2020-07-09
      还需要那些必要条件吗
      2020-07-09
      回复
登录 后发表内容