由于流星/反应应用程序中的一个Mutation对象,我试图保存一个很大的对象,但在控制台中却出现了Payload太大错误:
PayloadTooLargeError:请求实体太大
我知道我的对象超过了100kb,这是bodyparser的默认限制,但是我无法更改它。
在启动Apollo服务器时,我尝试了以下方法:
const server = new ApolloServer({
typeDefs,
resolvers,
context: async ({ req }) => {
return ({
user: await getUser(req.headers.authorization)
})
}
})
server.applyMiddleware({
app: WebApp.connectHandlers,
path: '/graphql'
})
WebApp.connectHandlers.use(bodyParser.json({limit: '100mb', extended: true}));
WebApp.connectHandlers.use('/graphql', (req, res) => {
if (req.method === 'GET') {
res.end()
}
})
但是我仍然遇到相同的错误。我认为我的对象大约为400kb。我希望你们中的一个能帮助我。预先感谢。
答案 0 :(得分:1)
apollo-server-express
已包含body-parser
,因此您不应再次将其添加为中间件。相反,您可以在调用body-parser
时将applyMiddlware
选项传递给Apollo:
server.applyMiddleware({
app: WebApp.connectHandlers,
path: '/graphql',
bodyParserConfig: {
limit: '100mb',
},
})
有关可用选项的完整列表,请参见docs。