云函数里调用cloud.callFunction,可能参数数据量有点大,它既不执行也不报错什么鬼?
发布于 6 年前 作者 li46 1643 次浏览 来自 问答

有一个查询数据并导出excel的业务流程,当数据组装好了开始调用导出云函数时:

console.log(1)
console.log(array.length)

const resFile = await cloud.callFunction({
  name: "exportToExcel",
  data: {
    cloudPath,
    array,
    rangeArray: rangeArray,
    name: '订单列表'
  }
})
console.log(2)

打印的日志内容是:

2019-12-29T06:19:55.927Z  1
 
2019-12-29T06:19:55.928Z  1821
 
2019-12-29T06:19:56.414Z  2

可以看出来,exportToExcel被执行了半秒钟左右,但是问题来了,返回结果resFile不正常,是undefined,然后云开发后台查阅exportToExcel,没有调用记录,这是什么鬼?

大概是数据量太大出错,因为array length在几百的时候都没问题的。但又无法判断是哪个环节出错了。

一并附上exportToExcel的代码,就是组织参数调用第三方nodejs的一个云函数:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const xlsx = require('node-xlsx');

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const array = event.array
  const cloudPath = event.cloudPath
  const name = event.name
  const rangeArray = event.rangeArray
  
  var buffer = await xlsx.build([{
    name: name,
    data: array
  }], { '!merges': rangeArray });

  return await cloud.uploadFile({
    cloudPath: cloudPath,
    fileContent: buffer
  })

}

请指教,谢谢。

1 回复

问题解决了吗?

回到顶部