收藏
回答

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

问题模块 框架类型 问题类型 终端类型 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

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


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

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



最后一次编辑于  05-13  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 邓坤力
    邓坤力
    05-14

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

    05-14
    赞同 1
    回复 4
    • zz
      zz
      05-14

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

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

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

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

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

      05-17
      回复
    • Mystic
      Mystic
      05-20回复zz

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

      05-20
      回复
  • Coande
    Coande
    06-26

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

    06-26
    赞同
    回复 1
    • Coande
      Coande
      06-26

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

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


      06-26
      1
      回复