uni-app unicloud 云对象报错 "errCode": "FUNCTION_EXCUTE_ERROR"
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 是空对象, 应该是这个造成的吧?
但是为什么会这样呢?重新上传云对象也没用。。。
相关链接:
在 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();