`PayloadTooLargeError` 는 페이로드로 전달되는 데이터의 크기가 너무 크면 발생하는 에러입니다.
디폴트로 100kb가 지정되어 있는데 이는 `express` 미들웨어 옵션을 수정해주면 됩니다.
GraphQL 기준으로 아폴로 서버 인스턴스를 생성한 후에 생성된 인스턴스를 이용하여 미들웨어를 수정하면 해결됩니다.
const { GraphQLServer } = require("graphql-yoga");
const apolloServer = new GraphQLServer({
schema, // 스키마 지정
context, // 컨텍스트 지정
});
const options = {
port: 1234
bodyParserOptions: { limit: "10mb", type: "application/json" },
};
apolloServer.start(options, () =>
console.log("Server is running");
);
// ...
위 방법도 있고 프로덕트에 따라서 다른 방법을 이용해야 할 경우에는 `applyMiddleware` 를 이용하는 방법도 있습니다.
하지만 위와 같은 동작을 합니다.
// ...
const { GraphQLServer } = require("graphql-yoga");
const apolloServer = new GraphQLServer({
schema, // 스키마 지정
context, // 컨텍스트 지정
});
apolloServer.applyMiddleware({
app: WebApp.connectHandlers,
path: '/graphql',
bodyParserConfig: {
limit: '100mb', // 지정할 payload 크기
},
})
// ...