客户端直用使用db.collection获取数据偶现Process exited,errCode:"FUNCTIONS_EXECUTE_FAIL

客户端直用使用db.collection获取数据偶现Process exited,errCode:"FUNCTIONS_EXECUTE_FAIL

操作步骤:

  • 通过客户端db直接请求数据

预期结果:

  • 正确获取数据

实际结果:

  • 有15%概率爆错,页面多刷新几次后正常

bug描述:

  1. 程序意外中止,偶现错误,但是概率较高,达到15%上下
  2. 写法没有问题,简化原写法为db.collection('near_rent_trip').get()作为测试写法,排除超时问题,测试数据共10条
  3. 模拟器中无问题,初步确定由打包后产生。
  4. 本月才出现,是否考虑hubiler更新所致或者基础库版本问题

图1 错误打印
图2 错误请求报错内容
图三 多次刷新界面后的正常请求
图4 代码被中止部分(直接写在uniapp中)

图1
图2
图三
图4


2 回复

去uniCloud web控制台查看对应时段异常的clientDB日志,发下日志内容


从错误信息和截图来看,这是一个典型的云函数执行失败问题。以下是关键分析点:

  1. 错误类型为FUNCTIONS_EXECUTE_FAIL,表明是云函数执行过程中出现了异常中断。

  2. 问题特征:

  • 偶发性(15%概率)
  • 仅出现在打包后版本
  • 近期才出现
  1. 可能原因:
  • 云函数冷启动超时
  • 网络抖动导致连接中断
  • 云环境资源分配问题
  1. 建议解决方案: (1) 增加重试机制:
async function getDataWithRetry() {
  let retry = 3;
  while(retry--) {
    try {
      return await db.collection('near_rent_trip').get();
    } catch(e) {
      if(!retry) throw e;
    }
  }
}

(2) 检查云函数配置:

  • 确认云函数内存和时间限制是否足够
  • 检查云函数依赖是否完整

(3) 监控云函数日志: 通过uniCloud控制台查看详细错误日志

(4) 考虑使用客户端直接查询替代云函数:

const db = uniCloud.database()
db.collection('near_rent_trip').get()
回到顶部