无法从上下文访问请求

弗朗西斯科·维贾亚

我将 Koa.js 与 Apollo Server 的apollo-server-koa.

我已经调试了{ req }并且该值未定义。我已经按照文档进行了操作,但仍然没有任何线索。即使我访问req.headers.authorization并将其放在graphql gui的HTTP标头上:

{
  "authorization": "bla"
}

值还是undefined

应用程序:

import cors from "@koa/cors";
import Koa from "koa";

import config from "./config/environtment";
import server from "./server";

const PORT: number = config.port;

async function bootstrap() {
  try {
    const app: Koa = new Koa();

    server.applyMiddleware({ app });

    app
      .use(cors())
      .listen(PORT, () =>
        console.log(
          `Server running on http://localhost:${PORT}${server.graphqlPath}`,
        ),
      );
  } catch (error) {
    console.error(error);
  }
}

bootstrap();

服务器.ts:

import { ApolloServer } from "apollo-server-koa";

import typeDefs from "./graphql/schema";
import resolvers from "./graphql/resolvers";
import context from "./graphql/context";

export default new ApolloServer({
  typeDefs,
  resolvers,
  context,
});

上下文.ts

export default ({ req }) => {
  console.log(req) // return undefined.
  return {
    test: "test",
  };
};
丹尼尔·雷登

这些文档特定于apollo-server,它apollo-server-express在幕后使用。我相信apollo-server-koa,这些选项是在一个对象中传递的,该对象具有一个ctx包含 Koa上下文字段所以以下应该工作:

export default ({ ctx }) => {
  console.log(ctx.request)
  console.log(ctx.response)
  return {};
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章