属性 \`user\` 在类型 \`Session & Partial<SessionData>\` 上不存在

新手上路,请多包涵

我在 javascript 中有一段代码,我正在尝试将其转换为打字稿

route.get('/order', async(req,res) => {
    var sessionData = req.session;
    if(typeof sessionData.user === 'undefined')
    {
        res.redirect('/panel/login');
    }

这是我的一段代码,曾经在 javascript 中正常工作,但现在我得到了 user 错误:

“会话和部分”类型不存在属性“用户”

我假设我应该为 sessionData 变量和 (req, res) 参数添加类型,但我不知道应该为它分配什么类型。

PS:我知道这个问题看起来重复了,但我已经尝试过其他类似问题的解决方案,但没有用

任何帮助,将不胜感激。

原文由 amir yeganeh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

快速会话类型评论 中所述,您必须使用 Declaration merging

以下是如何在 Declaration merging 上实现 express-session

 import session from 'express-session';

declare module 'express-session' {
  export interface SessionData {
    user: { [key: string]: any };
  }
}

原文由 Kapobajza 发布,翻译遵循 CC BY-SA 4.0 许可协议

我刚遇到和你一样的问题。这似乎是一个相当新的问题: 请参阅此处的解释

为了解决这个问题,我按照 Github 问题中的描述重载了模块:

 import "express-session";
declare module "express-session" {
  interface SessionData {
    user: string;
  }
}

只需将 string 替换为该字段所需的任何类型。

我还添加了 ./typing-stubstsconfig.json

 "typeRoots": [
      "./typing-stubs",
      "./node_modules/@types"
]

原文由 Rabbit 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题