本地调试云函数调用时,出现以下异常。
云函数结构大致如下
我的用法类似于在getOpenId内通过cloud.callFunction调用sumRecord,把出错的文件放在其他的云函数目录下,就没问题,虽然可以通过这种方式解决问题,但想知道是什么原因导致会出现下面这种异常情况的,求大神指点解惑
node.js:1 [error] Unhandled Rejection at: Promise {<rejected>: Error: callFunction:fail callFunction:fail 400 Bad Request | [http://tl-4gthy7p960a2458e.tcb-api.t…, Symbol(async_id_symbol): 4954, Symbol(trigger_async_id_symbol): 4944, Symbol(destroyed): {…}} reason: Error: callFunction:fail callFunction:fail 400 Bad Request | [http://tl-4gthy7p960a2458e.tcb-api.tencentcloudapi.com/admin?&eventId=18a6ebe7183_1&seqId=18a6ebe7183_1]
at exports.E (xxx/cloudfunctions/ugc/node_modules/@cloudbase/node-sdk/lib/utils/utils.js:29:12)
at xxx/cloudfunctions/ugc/node_modules/@cloudbase/node-sdk/lib/utils/httpRequest.js:100:27
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Object.exports.default (xxx/cloudfunctions/ugc/node_modules/@cloudbase/node-sdk/lib/utils/httpRequest.js:373:21)
at async xxx/cloudfunctions/ugc/node_modules/wx-server-sdk/index.js:1724:29
小程序里调用代码
wx.cloud.callFunction({ name: 'quickstartFunctions', data: { type: 'selectRecord' } })
云函数目录如下
selectRecord
const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db = cloud.database(); // 查询数据库集合云函数入口函数 exports.main = async (event, context) => { // 返回数据库查询结果 // 这块是不是调用不对啊,在云函数quickstartFunctions内调用quickstartFunctions下的sumRecord return await cloud.callFunction({ name: 'quickstartFunctions', data: { type: 'sumRecord' } }) };
sumRecord
const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db = cloud.database(); const $ = db.command.aggregate; // 聚合记录云函数入口函数 exports.main = async (event, context) => { // 返回数据库聚合结果 return db.collection('sales').aggregate() .group({ _id: '$region', sum: $.sum('$sales') }) .end(); };
-------------------------------------------
按Mr.Zhao的回复更新后,可以了。应该就是云函数间调用时用cloud.callFunction,内部调用时用import/require引入,之前的用法有问题。
const cloud = require('wx-server-sdk'); const sumRecord = require('../sumRecord/index.js') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db = cloud.database(); // 查询数据库集合云函数入口函数 exports.main = async (event, context) => { // 返回数据库查询结果 const ret = await sumRecord.main() console.log(JSON.stringify(ret)) return await db.collection('sales').get(); };
真难为人啊 这咋猜