无法读取未定义的属性“上下文” - GraphQL

Posted

技术标签:

【中文标题】无法读取未定义的属性“上下文” - GraphQL【英文标题】:Cannot read property 'context' of undefined - GraphQL 【发布时间】:2020-08-01 02:40:40 【问题描述】:

我正在使用 Typescript、Express、TypeORM、GraphQL 和 TypeGraphQL 构建一个允许用户登录的小应用程序。

但是,当我在 GraphQL 操场上点击我的测试查询 bye 时,我得到:

Cannot read property 'context' of undefined
"TypeError: Cannot read property 'context' of undefined",
            "    at new exports.isAuth // isAuth is a JS file I wrote

MyContext.js

import  Request, Response  from "express";

export interface MyContext 
  req: Request;
  res: Response;
  payload?:  userId: string ;

isAuth.js

import  MiddlewareFn  from "type-graphql";
import  verify  from "jsonwebtoken";
import  MyContext  from "./MyContext";

export const isAuth: MiddlewareFn<MyContext> = ( context , next) => 
  const authorization = context.req.headers["authorization"];

  if (!authorization) 
    throw new Error("not authorized");
  
...

用户解析器

  @Query(() => String)
  @UseMiddleware(isAuth)
  bye(@Ctx()  payload : MyContext) 
    console.log(payload);
    return `your user id is: $payload!.userId`;
  

我不确定为什么context 在文件isAuth.js 中未定义

【问题讨论】:

本·阿瓦德,amirite? 【参考方案1】:

感谢:https://github.com/MichalLytek/type-graphql/issues/433

1) 进入./tsconfig.json

2) 将"target": "es5" 更改为"target": "es6"

【讨论】:

以上是关于无法读取未定义的属性“上下文” - GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL:TypeError:无法读取未定义的属性

GraphQL 突变和查询:无法读取未定义的属性

未捕获的类型错误:无法使用 Gatsby 和 graphQl 读取未定义的属性“数据”

“无法读取未定义的属性‘节点’” - Gatsby/GraphQL/Prismic

Graphql,React - TypeError:无法读取未定义的属性“地图”

graphql dataloader 无法读取未定义错误的属性“加载”