微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

时间:2020-12-18 23:46:13

最近在学习微信小程序云开发,刚一开始就遇到了问题。

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

点击获取openid的时候控制台开始报错:

[云函数] [login] user openid:  undefined

VM97:1 Setting data field "openid" to undefined is invalid.

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

然后我开始去百度搜索解决这个问题,各种方法都试过了,还是没有解决。换了一个思路,开始追踪代码:

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

鼠标悬停到右边的 index.js:55,发现是/pages/index/index.js文件的第55行报的错误,我们打开这个页面看看:

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

发现是在控制台打印了res.result.openId,这个变量是undefined,为了查看具体原因,我们先打印一下res里的东西吧,

在后面加一行代码:console.log(res) 看打印的是什么东西:

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

我们再编译一下看控制台打印的结果:

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

从结果里可以看到,获取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

  

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.

最后,再编译一下,问题成功解决!

微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.