如果您在使用Apollo Server时遇到“上下文请求属性不存在”的错误,这可能是因为您没有正确设置Apollo Server上下文。您需要将req传递给上下文,以便它可以在每个请求中使用。以下是一些示例代码,演示如何正确设置Apollo Server上下文:
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => ({
req
})
});
在上面的代码中,我们将req添加到上下文中,以便我们可以在每个请求中使用它。您可以根据您的需要添加其他属性。
您也可以在Apollo Server的构造函数中使用middlewares选项,这将允许您在请求前对上下文进行更多自定义设置。
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => ({
req,
user: req.user
}),
middlewares: [authMiddleware],
})
在上面的代码中,我们添加了一个名为authMiddleware的中间件,该中间件将向req对象添加一个名为user的属性。
请确保您正确设置了Apollo Server上下文,否则您可能会遇到在处理请求时缺少所需的属性的问题。