- 小程序云开发本地调试控制台报错“函数必须导出名为 'main' 的方法”bug
勾选文件变更时自动重新加载,此bug在编辑数据库相关代码时出现,具体表现为输入一些字符如空格和删掉后,保存,就会出现以下信息。如果保存后报错,把代码改为创建新函数生成的模板代码仍会报错,另外,不只是修改数据库操作语句会产生此bug,反复按ctrl+s也有几率产生bug 安装依赖使用的命令是npm install --save wx-server-sdk@latest 代码: const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (e, context) => { const wxContext = cloud.getWXContext() var time=new Date() var type=e.type var deviceid=e.deviceid a={ time:time, type:type, deviceid:deviceid, read:false } const db = cloud.database() db.collection('announces').add({ data:a }) db.collection('userdevice').where({ deviceid:deviceid }).get().then( res=>{ console.log(res.data) } ) /*return { e, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, aa:a }*/ } 报错信息: node.js:1 [error] Uncaught Exception: Error: 函数必须导出名为 'main' 的方法 at u.load (C:\Users\duchu\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\common\cloud-functions-debugger-server\worker\node.js:1:22007) at u.reload (C:\Users\duchu\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\common\cloud-functions-debugger-server\worker\node.js:1:26848) at C:\Users\duchu\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\common\cloud-functions-debugger-server\worker\node.js:1:28280 at process. (C:\Users\duchu\AppData\Roaming\Tencent\微信开发者工具\package.nw\js\common\cloud-functions-debugger-server\worker\node.js:1:28356) at process.emit (events.js:203:13) at emit (internal/child_process.js:876:12) at processTicksAndRejections (internal/process/task_queues.js:77:11) m @ node.js:1 (anonymous) @ node.js:1 emit @ events.js:203 (anonymous) @ internal/process/execution.js:150 TickObject (async) init @ internal/inspector_async_hook.js:21 emitInitNative @ internal/async_hooks.js:134 emitInitScript @ internal/async_hooks.js:341 TickObject @ internal/process/task_queues.js:102 nextTick @ internal/process/task_queues.js:130 handleMessage @ internal/child_process.js:885 channel.onread @ internal/child_process.js:574
2020-02-12 - 如何在then()方法内修改then()方法外的变量?
例如: var a=1; db.collection('devicelist').where({ deviceid:'0001' }).get().then( res=>{ a=res.data; }) console.log(a); 在该数据库请求完毕后,我想把查询结果保存到变量a中,但之后a值仍为1,而不是获取到的查询结果,但在调试器的console里执行以上语句没有任何问题。而如果没有var a=1;,则会直接报错变量不存在。
2020-01-11