本地调试正常,上传云端测试,发现 result 都是 null。
网上一通搜索,发现大概是这个原因:
异步操作的问题。云函数主体代码运行到最尾时就会结束线程,不会等你异步的返回结果。
说明云函数对 async/await 的支持是有问题的。
我原来的代码:
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
// 云函数入口函数
exports.main = async (event) => {
try {
const res = await cloud.openapi.security.msgSecCheck({
content: event.content,
});
if (res.errCode === 0) {
return Promise.resolve();
}
return Promise.reject();
} catch (err) {
return Promise.reject();
}
};
修改之后的代码:
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
// 云函数入口函数
exports.main = (event) => cloud.openapi.security.msgSecCheck({
content: event.content,
});
弃用了 async/await 之后果然就好了。
云函数其实问题挺多的,这次是本地测试好使,云端测试不行,下次就是云端测试不行,模拟器/真机测试好使。
唉,小程序啊小程序。