微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.
最近在学习微信小程序云开发,刚一开始就遇到了问题。
点击获取openid的时候控制台开始报错:
[云函数] [login] user openid: undefined
VM97:1 Setting data field "openid" to undefined is invalid.
然后我开始去百度搜索解决这个问题,各种方法都试过了,还是没有解决。换了一个思路,开始追踪代码:
鼠标悬停到右边的 index.js:55,发现是/pages/index/index.js文件的第55行报的错误,我们打开这个页面看看:
发现是在控制台打印了res.result.openId,这个变量是undefined,为了查看具体原因,我们先打印一下res里的东西吧,
在后面加一行代码:console.log(res) 看打印的是什么东西:
我们再编译一下看控制台打印的结果:
从结果里可以看到,获取openId的接口调用是成功的,只不过openId字段的位置在result下的userInfo下,而之前代码是通过result下来访问openId字段的,所以会出现未定义的问题,猜测可能是由于腾讯接口调整导致的问题。至此,真相大白。我们去修改一下/pages/index/index.js文件的第55、56行,改成如下:
console.log('[云函数] [login] user openid: ', res.result.userInfo.openId) app.globalData.openid = res.result.userInfo.openId
最后,再编译一下,问题成功解决!