如何解决防止在 firebase 云功能或 Apollo 服务器配置中解析请求正文
我使用在 firebase 函数上运行的 next.js,
和 next.js 的 api 路由有配置“bodyParser: false”——这样我就可以防止正文解析,
进一步当我将 (req,res ) 传递给 Apollo 服务器时,它可以正常工作。
但是如果我从云函数调用运行 Apollo 的 next.js,不幸的是,身体也在那里解析,
进一步的 Apollo 服务器失败,永远等待解析 body(已经被函数解析),
所以 next.js 的配置选项 ""bodyParser: false"" 在那里已经没用了。
如何防止函数体解析?是否有任何配置选项? 或者 Be Apollo 服务器可能有一些选项来通知之前已经解析过的主体?
样本:https://github.com/sealmu/test-course/tree/test
test-course/pages/api/graphql/index.ts 行:101 const handler = apolloServer.createHandler({ path: '/api/graphql' }); - 如果正文已经解析,则此处失败。
const getApolloServerHandler = async ({ res }: { res?: NextApiResponse }): Promise<any> => {
if (res) {
console.log('res init');
}
const apolloServer = new ApolloServer({
typeDefs: [todoTypes],resolvers: [todoResolvers],introspection: true,playground: true,context: ({ req,res }) => {
if (!req || !res) console.log('no');
return { };
},});
const handler = apolloServer.createHandler({ path: '/api/graphql' });
const corsHandler = cors(handler);
return corsHandler;
};
export const config = {
api: {
bodyParser: false,},};
export default async (req: NextApiRequest,res: NextApiResponse): Promise<void> => {
const apolloServerHandler = globalThis.apolloServerHandler || await getApolloServerHandler({ res: null });
globalThis.apolloServerHandler = apolloServerHandler;
return apolloServerHandler(req,res);
};
test-course/function.js - 和正文已经在这里解析。
const nextjsHandle = server.getRequestHandler();
exports.nextServer = https.onRequest((req,res) => {
return server.prepare().then(() => nextjsHandle(req,res));
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。