小程序遇到TypeError: Cannot read property 'sessionid' of undefined

用微擎编辑在微信开发者上传打开的时候,小程序遇到TypeError: Cannot read property 'sessionid' of undefined

img

告诉一下修改哪里

你把app打印看看里面是什么属性

img

1.首先检查一下是不是拼写错误
2.定义对应变量,并且最好给它一个初值

你本地存储中没有获取到userinfo信息吧

这边建议你看一看返回的值中的是否时元素名称错误,或者存userinfo时没进行存储,再或者在其他地方获取存储时不消息删掉或错存元素了

这个出错的地方,麻烦具体帮忙修改看看

img

img

278行

wx.login({
            success: function (res) {
                util.request({
                    url: 'auth/session/openid',
                    data: { code: res.code },
                    cachetime: 0,
                    success: function (session) {
                        if (!session.data.errno) {
                            userInfo.sessionid = session.data.data.sessionid
                            wx.setStorageSync('userInfo', userInfo);
                            wx.getUserInfo({
                                success: function (wxInfo) {
                                    userInfo.wxInfo = wxInfo.userInfo
                                    wx.setStorageSync('userInfo', userInfo);
                                    util.request({
                                        url: 'auth/session/userinfo',
                                        data: {
                                            signature: wxInfo.signature,
                                            rawData: wxInfo.rawData,
                                            iv: wxInfo.iv,
                                            encryptedData: wxInfo.encryptedData
                                        },
                                        method: 'POST',
                                        header: {
                                            'content-type': 'application/x-www-form-urlencoded'
                                        },
                                        cachetime: 0,
                                        success: function (res) {
                                            if (!res.data.errno) {
                                                userInfo.memberInfo = res.data.data;
                                                wx.setStorageSync('userInfo', userInfo);
                                            }
                                            typeof cb == "function" && cb(userInfo);
                                        }
                                    });
                                },
                                fail: function () {
                                    typeof cb == "function" && cb(userInfo);
                                },
                                complete: function () {
                                }
                            })
                        }
                    }
                });
            },
            fail: function () {
                wx.showModal({
                    title: '获取信息失败',
                    content: '请允许授权以便为您提供给服务',
                    success: function (res) {
                        if (res.confirm) {
                            util.getUserInfo();
                        }
                    }
                })
            }
        });
    };

曼格和有师傅小程序调试前端时出现Cannot read property 'config' of undefined的解决方法
可以借鉴下

你接口里面的数据是叫这个名字吗?就是你data.data.sessionid,你有没有查询过接口测试

sessionid未定义,未能成功获取授权

遇到"TypeError: Cannot read property ‘sessionid’ of undefined"的错误通常意味着在代码中尝试使用一个未定义或空值的属性。在这种情况下,它尝试读取一个名为’sessionid’的属性,但对象是未定义
按照以下步骤进行排查:

检查错误消息中提到的代码行,并确保它位于正确的位置。
确保你正确地初始化了相关的对象或变量。在这种情况下,你应该检查是否已正确定义了’sessionid’。
如果’sessionid’是从其他地方获取的,例如请求的参数或从某个对象中提取的属性,请确保确保相关对象已正确地处理和传递。
检查代码中是否存在其他潜在的错误,可能会导致’sessionid’未定义或为空。

TypeError: Cannot read property 'sessionid' of undefined 错误通常是由于在代码中尝试访问一个未定义或不存在的属性导致的。在微信小程序开发中,这种错误可能会出现在一些情况下,比如:
1、尝试访问未定义的变量或对象属性。
2、尝试访问一个不存在的对象属性或方法。
3、对函数调用参数或返回值的类型进行了错误的假设。
根据你提供的代码片段,可以看到错误出现在 app.sessionid 这个表达式上。错误信息指出不能读取 sessionid 属性,因为 app 对象为 undefined。
出现这种错误的原因可能是 app 对象没有被正确初始化或赋值。在这段代码中,app 对象似乎是从缓存中获取的,但代码中没有展示如何给 app 赋值。因此,可能会有以下几个问题导致这个错误:
1、在获取 app 对象时,wx.getStorageSync("userInfo") 返回了空值或未定义,导致 app 对象也是空值或未定义。
2、在获取 app 对象后,没有为 sessionid 属性赋值,导致 sessionid 为未定义。
要解决这个错误,你需要在获取 app 对象后,检查其是否存在和是否包含 sessionid 属性。可以使用如下代码进行检查:

var app = wx.getStorageSync('userInfo');
if (app && app.sessionid) {
  wx.checkSession({
    success: function() {
      typeof cb == "function" && cb(app);
    },
    fail: function() {
      app.sessionid = '';
      console.log('relogin');
      wx.removeStorageSync('userInfo');
      login();
    }
  });
}

这样,在访问 app.sessionid 之前,会先检查 app 对象是否存在和 sessionid 属性是否存在,以避免出现 TypeError。
同时,确保在其他地方正确设置和获取 app 对象及其属性,以保证程序的正常运行。

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您提供的信息,小程序出现了 TypeError: Cannot read property 'sessionid' of undefined 错误。这个错误通常表示在尝试读取一个未定义的属性 'sessionid' 时发生了问题。

要解决这个错误,您可以尝试以下几个步骤:

  1. 检查代码中的变量命名:确保在使用 'sessionid' 属性之前,相关的变量已经正确地定义和赋值。检查代码中的拼写错误或语法错误,确保变量名的大小写和使用方式正确。
  2. 检查请求和响应:如果 'sessionid' 是从请求中获取的,确保在请求发送之前,您已正确地设置了相应的请求头或参数,以便服务器正确地返回 'sessionid'。
  3. 确认后端逻辑:在后端代码中,确保正确处理和返回 'sessionid'。检查后端代码中关于 'sessionid' 的逻辑,包括验证和获取 'sessionid' 的步骤。确保后端服务器能够正确地返回 'sessionid'。
  4. 检查接口文档和配置:查看微擎的相关文档和配置,确保您已正确地配置了会话(session)功能,并按照文档中的指导使用 'sessionid'。
  5. 调试和日志记录:如果以上步骤都没有解决问题,您可以在代码中添加调试语句或日志记录,以便追踪代码执行过程,并查看任何可能的错误或异常。

请注意,具体的解决方法可能因您的代码和环境而异。建议您仔细检查相关代码和配置,并参考微擎的文档或寻求相关技术支持以获取更具体的帮助。

本地存储中获取userInfo信息,然后从userInfo中获取sessionid。userInfo信息是在用户同意授权后获取到保存在本地的源代码逻辑中没有考虑用户到用户拒绝授权的情况下,本地存储是没有userInfo的。拒绝的情况下通过wx.getStorageSync("userInfo")获取的字是undefined 自然
wx.getStorageSync("userInfo").sessionid报错Cannot read property 'sessionid' of undefined

解决办法 处理请求时候的做逻辑判断,判断wx.getStorageSync("userInfo")是否为undefined,是的话,重新获取用户授权。否则执行之后的代码。