首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性'user‘在'Request<ParamsDictionary,any,any,ParsedQs,Record<string,any>>’类型中不存在

属性'user‘在'Request<ParamsDictionary,any,any,ParsedQs,Record<string,any>>’类型中不存在
EN

Stack Overflow用户
提问于 2021-01-22 15:54:27
回答 3查看 15.6K关注 0票数 7

请帮帮忙,我收到了这个错误

src/app/middlewares/鉴证:16:17-错误TS2339:属性'user‘在'Request’类型上不存在。

16 req.user = user;

我已经创建了.d.ts文件,并将其包含在tsconfig文件中。但是我仍然不能运行这段代码。

请查找附呈的截图

在这里输入图像描述

EN

回答 3

Stack Overflow用户

发布于 2021-08-03 18:50:26

  1. 在src目录中创建类型文件夹。
  2. 使用要扩展的包的名称在“类型”文件夹中创建一个文件夹。(在本例中为明示)。
  3. 在该文件夹中创建一个index.d.ts文件
代码语言:javascript
复制
 src/
   - types/
    - express/
     - index.d.ts
  1. 将此代码添加到索引文件中。
代码语言:javascript
复制
import express from "express";

declare global {
  namespace Express {
    interface Request {
      user?: Record<string,any>
    }
  }
}
  1. 记得更新你的tsconfig.json文件
代码语言:javascript
复制
{
  "compilerOptions": {
    "typeRoots" : ["./src/types", "./node_modules/@types"]
  }
}

这应该能行

票数 16
EN

Stack Overflow用户

发布于 2021-01-22 16:08:43

我之前也被困在同一个问题上了。我就是这样解决的。

  1. 我在我的项目中创建了一个名为@type的单独目录,用于声明合并到工作中。
  2. 接下来,我在其中创建了一个名为index.d.ts的文件,其内容如下。请注意,我们需要在全球范围内宣布我们自己的要求。此外,进口快递也很重要。
代码语言:javascript
复制
import * as express from "express"
declare global {
    namespace Express {
        interface Request {
            user? : Record<string,any>
        }
    }
}
  1. 我在compilerOptions下在tsconfig.json中添加了下面一行。
代码语言:javascript
复制
 "compilerOptions": {
     ...other settings,
     "typeRoots": ["@types", "node_modules/@types"],
     ...other settings
 }

就是这样。它应该适用于这些更改。

票数 7
EN

Stack Overflow用户

发布于 2022-05-18 10:17:33

另一种方式是:

代码语言:javascript
复制
import { NextFunction, Request, Response } from 'express';

interface IDecode {
    address: string,
    role: string,
    iat: number,
    exp: number
  };

 interface RequestWithUserRole extends Request {
    user?: IDecode,
}


 const parseToken = (secret: string) => 
  async (req: RequestWithUserRole, res: Response, next: NextFunction) => {
    try{
      const token  = req.headers?.authorization?.split(' ')[1];
      // console.log(req.headers?.authorization);
      if (!token) {
        return res.status(403).json({message: 'Token not  found'})
      }
      const decodedData = <IDecode> jwt.verify(token, secret);
      req.user = decodedData;
      // console.log(decodedData);
      return next();
    }
    catch(e) {
      return res.status(500).json({e})  
    }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65848442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档