错误:请求实体在节点的graphql服务中太大

时间:2017-01-05 13:30:48

标签: node.js graphql body-parser

我正在研究基于节点的graphql项目,试图将base64格式的图像发送到服务器。

我正在使用bodyparser模块并将其配置为如下。

app.use(bodyparser.text({type: 'application/graphql'}));

app.use(bodyparser.json({limit: '50mb'}));
app.use(bodyparser.urlencoded({limit: '50mb', extended: true}));

我可以通过直接节点服务发送base64图像,但是当涉及到graphql服务时,它会抛出错误:

  

错误:请求实体太大

3 个答案:

答案 0 :(得分:3)

为了帮助其他使用graphql-yoga npm软件包的人。添加bodyparser选项的语法完全不同,我花了数小时进行调试并尝试使其工作,因此在此处添加代码以供参考:

const { GraphQLServer } = require("graphql-yoga");

const server = new GraphQLServer({
  schema,  //Your schema
  context, //Your context
});

const options = {
  port: 1234
  bodyParserOptions: { limit: "10mb", type: "application/json" },
};

server.start(options, () =>
  console.log(
    "Server is running\m/" 
  )
);

答案 1 :(得分:1)

您使用的是graphql-express npm包吗?

如果是这样,问题很可能是这一行: https://github.com/graphql/express-graphql/blob/master/src/parseBody.js#L112

如您所见,这为请求设置了最大100kb的大小。

我们遇到了同样的问题并通过分配存储库并手动增加最大请求大小来修复它。

这可能是为这个包做出贡献的好机会! 如果限制是可配置的,那就太好了。

答案 2 :(得分:0)

对我来说,我指定了上传文件,并且可以正常工作:

const options = {
  uploads: {
    maxFieldSize: 1000000000,
    maxFileSize: 1000000000
  }
}

bodyParser仅适用于req.body,在您的情况下,您正在处理多份表格