req 在 Apollo Server 上下文中始终未定义
Posted
技术标签:
【中文标题】req 在 Apollo Server 上下文中始终未定义【英文标题】:req always undefined in Apollo Server context 【发布时间】:2019-07-15 02:30:26 【问题描述】:我对 apollo-server 上下文有疑问。我写了以下代码:
const ApolloServer = require("apollo-server-azure-functions");
const typeDefs, resolvers = require('../graphql_schema/schema');
const server = new ApolloServer(
typeDefs,
resolvers,
context: ( req ) =>
console.log(req);
return
req: req
,
introspection: false,
playground: true,
);
module.exports = server.createHandler();
但是 req 变量总是未定义的。 有人有想法吗?
我正在使用以下版本的阿波罗
"apollo-server": "^2.4.2",
"apollo-server-azure-functions": "^2.4.2",
非常感谢。
【问题讨论】:
【参考方案1】:我有解决问题的办法。
context: ( req ) =>...
不要解构req
,应该是:
context: (req) => ...
const ApolloServer = require("apollo-server-azure-functions");
const typeDefs, resolvers = require('../graphql_schema/schema');
const server = new ApolloServer(
typeDefs,
resolvers,
context: (req) =>
return
accesstoken: GetAccessToken(req.request)
,
introspection: false,
playground: true,
);
const GetAccessToken = function (request)
const token = (request.headers.authorization || '').replace('BEARER ', '');
return token;
module.exports = server.createHandler();
【讨论】:
【参考方案2】:需要在顶部定义req参数
const ApolloServer = require("apollo-server-azure-functions");
const typeDefs, resolvers = require('../graphql_schema/schema');
const server = new ApolloServer(
typeDefs,
resolvers,
req,
context: ( req ) =>
console.log(req);
return
req: req
,
introspection: false,
playground: true,
);
module.exports = server.createHandler();
【讨论】:
以上是关于req 在 Apollo Server 上下文中始终未定义的主要内容,如果未能解决你的问题,请参考以下文章
在 Apollo Server 上下文中获取 NextAuth.js 用户会话