Search code examples
expressgraphqltypegraphql

Cannot read property 'context' of undefined - GraphQL


I am using Typescript, Express, TypeORM, GraphQL and TypeGraphQL to build a small app that allows the user to login.

However, when I hit my test query bye on the GraphQL playground, I get:

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");
  }
...

UserResolver

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

I am not sure why the context is undefinied in the file isAuth.js


Solution

  • SOLVED thanks to: https://github.com/MichalLytek/type-graphql/issues/433

    1) Go into ./tsconfig.json

    2) Change "target": "es5" to "target": "es6"