微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Next.JS + Apollo ServerbodyParser 问题

如何解决Next.JS + Apollo ServerbodyParser 问题

在 next.js api 路由函数上使用 apollo 服务器时,我们有:

export const config = {
    api: {
        bodyParser: false
    },};

这样 Apollo 就不会在处理来自 next.js 的请求时失败

但是,如果我们删除此配置,那么我想 Apollo 将无限等待获取未解析的正文(或未解析的请求流)。

如果我的请求也被(快速服务器或云函数)解析,将导致 Apollo 挂起并最终因超时错误而失败。

我该如何处理这个问题?

import Cors from 'micro-cors';
import { ApolloServer,gql } from 'apollo-server-micro';

import { NextApiRequest,NextApiResponse } from 'next';

type Todo = {
    ...
};

const todos: Todo[] = [
    ...
];

const todoResolvers = {
    Query: {
        ...
    },Mutation: {
        ...
    };

const todoTypes = gql`
    ...
`;




const cors = Cors({
    origin: "*",credentials: true,});

const getApolloServerHandler = async (): Promise<any> => {

    const apolloServer = new ApolloServer({
        typeDefs: [todoTypes],resolvers: [todoResolvers],introspection: true,playground: true,});

    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 = await getApolloServerHandler();
    return apolloServerHandler(req,res);
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。