在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
相关产品推荐
相关产品推荐

