我有以下 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,我可以发送突变和查询请求,所以一切都按预期工作,除了我的上下文函数没有触发。无论我做什么,日志都不会显示。当这个工作时,它每两秒左右记录一次上下文。我做错了什么?
Apollo Server 4 没有该
context
选项 - 如果您使用 TypeScript,您应该在此处收到警告。
这已记录在文档中。
相反,您可以将
context
作为参数传递给例如expressMiddleware
或 startStandaloneServer
。