打字稿错误:“请求”类型上不存在属性“用户”

新手上路,请多包涵

我的快递应用程序中有以下代码

router.get('/auth/userInfo', this.validateUser,  (req, res) => {
    res.json(req.user);
});

我的 IDE 似乎在抱怨这个错误

错误 TS2339:“请求”类型上不存在属性“用户”。

当我编译我的打字稿代码时,它似乎抛出了这个错误。任何想法为什么会发生这种情况?

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

阅读 332
1 个回答

我们有一个用 Express 和 Typescript 编写的大型 API,这就是我们处理此类场景的方式:

我们将请求定义保存在一个文件中:

 import { Request } from "express"
export interface IGetUserAuthInfoRequest extends Request {
  user: string // or any other type
}

然后在我们编写控制器函数的文件中:

 import { Response } from "express"
import { IGetUserAuthInfoRequest } from "./definitionfile"

app.get('/auth/userInfo', validateUser,  (req: IGetUserAuthInfoRequest, res: Response) => {
  res.status(200).json(req.user); // Start calling status function to be compliant with Express 5.0
});

请注意,“用户”不是 Express 的 Request 对象中本机可用的属性。确保您使用的是将此类属性添加到请求对象的中间件。

原文由 Akshar Patel 发布,翻译遵循 CC BY-SA 3.0 许可协议

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