`context`函数不执行 NextJs / Apollo / GraphQL

问题描述 投票:0回答:1

我有以下 Apollo 设置

import { ApolloServer } from '@apollo/server';
import { handleAuth } from '../../api/helpers/AuthenticationHelpers/handleAuth';
import resolvers from '../../api/graphql/resolvers';
const typeDefs = require("../../api/graphql/schema");

const createContext = async ({ req }) => {
  console.log("Handling Context");
  console.log("REQUEST::::", req);
  return { user: null }; // Simplify the logic for testing
};


const apolloServer = new ApolloServer({
  typeDefs,
  resolvers,
  introspection: true,
  playground: true,
  context: createContext,
});

export { apolloServer };

然后我导出并输入到此文件中,然后在其中启动它......

import { startServerAndCreateNextHandler } from '@as-integrations/next';
import { apolloServer } from "./server"

export default startServerAndCreateNextHandler(apolloServer);

我也尝试按照以下方式进行操作,根据Apollo官方文档Next/Apollo集成文档

import { startServerAndCreateNextHandler } from '@as-integrations/next';
import { apolloServer } from "./server"

const createContext = async ({ req }) => {
  console.log("Handling Context");
  console.log("REQUEST::::", req); // Add this line for debugging

  if (!req || !req.headers) {
    console.error("Request object or headers undefined");
    return { user: null };
  }

  const token = req.headers.authorization;
  if (!token) {
    return { user: null };
  }

  const user = await handleAuth(token);
  return user;
};

export default startServerAndCreateNextHandler(apolloServer, {context: createContext});

这两种变体都不起作用。

我可以完美地访问 API,我可以发送突变和查询请求,所以一切都按预期工作,除了我的上下文函数没有触发。无论我做什么,日志都不会显示。当这个工作时,它每两秒左右记录一次上下文。我做错了什么?

next.js apollo apollo-server
1个回答
0
投票

Apollo Server 4 没有该

context
选项 - 如果您使用 TypeScript,您应该在此处收到警告。

这已记录在文档中

相反,您可以将

context
作为参数传递给例如
expressMiddleware
startStandaloneServer

© www.soinside.com 2019 - 2024. All rights reserved.