【发布时间】:2021-04-08 12:46:32
【问题描述】:
我正在尝试使用 typescript 在 Node.js 中设置自定义中间件函数,我想在其中将解码的 json Web 令牌存储到自定义请求属性“用户”中,就像这样
function auth(req: Request, res: Response, next: NextFunction) {
const decodedToken = jwt.verify(token, config.get("secret"));
req.user = decodedToken.user;
next();
}
但我在终端中不断收到编译器错误
错误 TS2339:“请求
”类型上不存在属性“用户”。
我在这里找到了几个建议创建 custom.d.ts 文件并扩展我这样做的请求类型的答案:
namespace Express {
interface Request {
user?: string;
}
}
现在,VS Code 很高兴,我没有 linting,我得到了正确的智能感知和自动完成,它不允许我分配一个数字,因为它知道它需要是一个字符串。所以它显然有效。但是,当我运行代码时,终端一直给我同样的错误,并坚持认为属性“用户”不存在。
我尝试重新启动 TS 服务器,但没有帮助。
我可以通过创建一个扩展 Request 类型的自定义接口然后使用它来使其工作,但我真的想知道如何使用原始 Request 类型来做到这一点。
【问题讨论】:
标签: node.js typescript express