You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在markAsLoggedOut函数中遇TypeError: Cannot read properties of null (reading 'update')求解决

解决TypeError: Cannot read properties of null (reading 'update')问题

这个错误的核心原因是调用markAsLoggedOut时传入的user参数实际为null——虽然参数标注了UserInstance,但TypeScript的类型检查仅在编译阶段生效,运行时如果传入null,就会触发"无法读取null的update属性"的报错。

以下是具体解决方案:

  • 在函数内添加参数校验
    先判断user是否为null或undefined,避免后续调用不存在的方法:

    function markAsLoggedOut(user: UserInstance | null | undefined) {
      if (!user) {
        // 根据业务需求选择处理方式:返回空Promise、抛出明确错误等
        return Promise.resolve(null);
        // 或者抛出错误:throw new Error("无法对不存在的用户执行登出操作");
      }
      return user.update({ token: null });
    }
    
  • 检查调用函数的源头
    找到调用markAsLoggedOut的代码,确认为什么会传入null。比如从数据库查询用户时未找到记录,返回null却直接传入函数:

    // 错误示例:未判断用户是否存在就调用
    const user = await UserModel.findByPk(userId);
    markAsLoggedOut(user);
    
    // 修正方式:先校验用户存在性
    const user = await UserModel.findByPk(userId);
    if (user) {
      markAsLoggedOut(user);
    } else {
      // 处理用户不存在的场景,比如打印日志或返回错误信息
    }
    
  • 更新类型标注(可选)
    如果函数本身允许接收null,更新参数的类型定义为UserInstance | null,让TypeScript在编译阶段就提示潜在的调用风险,提前避免错误。

内容的提问来源于stack exchange,提问作者Kathish Kumaran R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:15:12