流星/反应/ ApolloServer / BodyParser-有效负载过大

时间:2019-05-08 09:50:47

标签: meteor apollo body-parser apollo-server

由于流星/反应应用程序中的一个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。我希望你们中的一个能帮助我。预先感谢。

1 个答案:

答案 0 :(得分:1)

apollo-server-express已包含body-parser,因此您不应再次将其添加为中间件。相反,您可以在调用body-parser时将applyMiddlware选项传递给Apollo:

server.applyMiddleware({
  app: WebApp.connectHandlers,
  path: '/graphql',
  bodyParserConfig: {
    limit: '100mb',
  },
})

有关可用选项的完整列表,请参见docs