求助大神:本地部署,登陆时报错Cannot read property 'user_info' of undefined
Closed this issue · 2 comments
【nodemon提示报错如下】
koa-weapp-demo Catch Error: TypeError: Cannot read property 'user_info' of undefined at AuthDbService.getUserInfoByOpenId.then.userinfo (/data/release/weapp/node_modules/wafer-node-sdk/lib/auth/index.js:41:56) at runCallback (timers.js:810:20) at tryOnImmediate (timers.js:768:5) at processImmediate [as _immediateCallback] (timers.js:745:5) From previous event: at Builder.Target.then (/data/release/weapp/node_modules/knex/lib/interface.js:36:24) at getSessionKey.then.pkg (/data/release/weapp/node_modules/wafer-node-sdk/lib/auth/index.js:40:62) at at process._tickCallback (internal/process/next_tick.js:188:7) +2ms
【/……/auth/index.js附近代码】
// 如果只有 code 视为仅使用 code 登录
if (code && !encryptedData && !iv) {
return getSessionKey(code).then(pkg => {
const { openid, session_key } = pkg
// 生成 3rd_session
const skey = sha1(session_key)
return AuthDbService.getUserInfoByOpenId(openid).then(userinfo => {
const wxUserInfo = JSON.parse(userinfo.user_info)
return AuthDbService.saveUserInfo(wxUserInfo, skey, session_key)
.then(userinfo => ({
loginState: LOGIN_STATE.SUCCESS,
userinfo: {
userinfo: wxUserInfo,
skey: userinfo.skey
}
}))
})
})
}
【getUserInfoByOpenId方法对应的部分代码】
/**
* 通过 openid 获取用户信息
* @param {string} openid 用户的 openid
*/
function getUserInfoByOpenId (openId) {
if (!openId) throw new Error(ERRORS.DBERR.ERR_NO_OPENID_ON_CALL_GETUSERINFOFUNCTION)
return mysql('cSessionInfo').select('*').where({ open_id: openId }).first()
}
【疑问&求助】
同样server代码,在腾讯云免费开发环境就正常,本地调试的时候就报错,看起来是从cSessionInfo中没有查询到数据,,,
感觉很奇怪:在该步骤前,似乎没调用过AuthDbService.saveUserInfo……如果确实是这样,那cSessionInfo里根本没有数据啊,AuthDbService.getUserInfoByOpenId必然报错啊,,,
还是我哪里看错了,求大神帮忙解答TAT
用户第一次登录不能使用 code 登录
奥,谢谢大神解答,终于登陆成功了,,
原来是我用微信云登陆过,,改了client的config.js中的host后又用本地环境登陆……
qcloud.Session.get()拿到了会话信息。。所以调用qcloud.loginWithCode了……-_-#
【/client/pages/index/index.js中部分代码】
const session = qcloud.Session.get()
if (session) {
// 第二次登录
// 或者本地已经有登录态
// 可使用本函数更新登录态