uni-app unicloud 云对象报错 "errCode": "FUNCTION_EXCUTE_ERROR"

发布于 1周前 作者 caililin 来自 Uni-App

uni-app unicloud 云对象报错 “errCode”: “FUNCTION_EXCUTE_ERROR”

操作步骤:

  • 偶现 直接调用云对象中方法

预期结果:

  • 云函数可以成功调用

实际结果:

  • 云函数报错

bug描述:

云函数报错,但是定位不到是什么原因,因为云对象中并没有toJSON方法。

{
"objectName": "boxxxx",
"methodName": "toJSON",
"params": [""],
"error": {
"errMsg": "Method[toJSON] was not found in E:\\xxxx\\cloudfunctions\\boss-zhitan\\index.obj.js",
"errCode": "FUNCTION_EXCUTE_ERROR",
"code": "FUNCTION_EXCUTE_ERROR",
"detail": {
"errMsg": "Method[toJSON] was not found in E:\\xxxx\\cloudfunctions\\boss-zhitan\\index.obj.js",
"errCode": "FUNCTION_EXCUTE_ERROR",
"code": "FUNCTION_EXCUTE_ERROR"
}
}
}

打印 params是有值的
但是
引用的云对象 const connectObj = uniCloud.importObject('bosxxxx);
打印 发现connectObj 是空对象, 应该是这个造成的吧?
但是为什么会这样呢?重新上传云对象也没用。。。

相关链接:


1 回复

在 uni-app 中使用 uniCloud 云对象时,如果遇到 "errCode": "FUNCTION_EXCUTE_ERROR" 报错,通常表示云对象的函数执行过程中出现了问题。以下是一些可能的原因和解决方法:

1. 函数代码错误

  • 原因: 云对象中的函数代码可能存在语法错误、逻辑错误或未处理的异常。

  • 解决方法: 检查云对象中的函数代码,确保没有语法错误,并且所有异常情况都得到了处理。可以通过 try-catch 捕获异常,并在控制台输出错误信息以便调试。

    module.exports = {
      async myFunction() {
        try {
          // 你的业务逻辑代码
        } catch (e) {
          console.error('函数执行出错:', e);
          throw new Error('函数执行出错');
        }
      }
    };

2. 数据库操作错误

  • 原因: 云对象中可能涉及数据库操作,如果数据库查询或更新操作出错,也会导致 FUNCTION_EXCUTE_ERROR

  • 解决方法: 检查数据库操作的代码,确保查询条件、更新数据等是正确的。可以使用 uniCloud.database().get().update() 方法后,检查返回的结果是否有错误。

    module.exports = {
      async myFunction() {
        const db = uniCloud.database();
        const res = await db.collection('myCollection').where({}).get();
        if (res.errCode) {
          console.error('数据库查询出错:', res);
          throw new Error('数据库查询出错');
        }
        return res.data;
      }
    };

3. 云函数超时

  • 原因: 云函数的执行时间超过了默认的超时时间(通常为 5 秒),导致函数被强制终止。

  • 解决方法: 优化代码逻辑,减少执行时间。如果需要更长的执行时间,可以在云函数的配置中增加超时时间。

    {
      "timeout": 10 // 设置为 10 
    }

4. 云对象未正确导出

  • 原因: 云对象的函数未正确导出,导致调用时找不到函数。

  • 解决方法: 确保云对象的函数是通过 module.exports 导出的。

    module.exports = {
      async myFunction() {
        // 你的业务逻辑代码
      }
    };

5. 云对象路径错误

  • 原因: 调用云对象时,路径可能写错了,导致找不到对应的云对象。

  • 解决方法: 确保调用云对象时路径正确,路径应该与云对象文件所在的目录结构一致。

    const myCloudObject = uniCloud.importObject('myCloudObject');
    const res = await myCloudObject.myFunction();
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!