express-jwt 和 express-graphql:错误 TS2339:“请求”类型上不存在属性“用户”

Posted

技术标签:

【中文标题】express-jwt 和 express-graphql:错误 TS2339:“请求”类型上不存在属性“用户”【英文标题】:express-jwt and express-graphql: error TS2339: Property 'user' does not exist on type 'Request' 【发布时间】:2019-06-25 00:15:40 【问题描述】:

我尝试让 express-jwt 和 graphql 在 typescript 中一起工作。

import * as express from 'express'
import * as expressGraphql from 'express-graphql'
import * as expressJwt from 'express-jwt'

import schema from './api/schemas'
import rootValue from './api/resolvers'

const app = express()

app.use(
  expressJwt(
    credentialsRequired: false,
    secret: process.env.JWT_SECRET
  )
)

app.use(
  '/',
  expressGraphql((req, res, graphQLParams) => (
    schema,
    rootValue,
    context: 
      user: req.user
    
  ))
)

我导入了相关类型 @types/express@types/express-graphql@types/express-jwt

有一个打字稿错误:

error TS2339: Property 'user' does not exist on type 'Request'

userexpress-jwt 添加到请求对象上。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

用一个属性扩展 Express Request

interface AuthRequest extends express.Request 
  user?: string


app.use(
  '/',
  expressGraphql((req: AuthRequest, res, graphQLParams) => (
    schema,
    rootValue,
    context: 
      user: req.user
    
  ))
)

【讨论】:

以上是关于express-jwt 和 express-graphql:错误 TS2339:“请求”类型上不存在属性“用户”的主要内容,如果未能解决你的问题,请参考以下文章

使用 angular 和 express-jwt 实现刷新令牌

express-jwt 和带有 cookie 的 Angular 9:未在“授权”标头中设置令牌

express-jwt 和 express-graphql:错误 TS2339:“请求”类型上不存在属性“用户”

如何查看存储在 JWT 中的数据?使用 auth0 和 express-jwt

未找到授权令牌 - Express-JWT 和 Auth0

如何使用 express-Jwt 解码来自 idToken 的信息?