本地調試正常,上傳雲端測試,發現 result 都是 null。小程序
網上一通搜索,發現大概是這個緣由:api
異步操做的問題。雲函數主體代碼運行到最尾時就會結束線程,不會等你異步的返回結果。
說明雲函數對 async/await 的支持是有問題的。異步
我原來的代碼:async
// 雲函數入口文件 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 以後果真就行了。測試
雲函數其實問題挺多的,此次是本地測試好使,雲端測試不行,下次就是雲端測試不行,模擬器/真機測試好使。ui
唉,小程序啊小程序。.net