【问题标题】:Error: request entity too large in graphql services of node错误:节点的graphql服务中请求实体太大
【发布时间】:2017-05-20 01:50:53
【问题描述】:

我正在开发基于节点的 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 服务时,它会抛出错误:

错误:请求实体太大

【问题讨论】:

  • 尝试设置类型。 var urlencodedParser = bodyParser.urlencoded({extended:true,limit:1024*1024*20,type:'application/x-www-form-urlencoding' })
  • 感谢@digit 的回复,我试过了,但对我没用。

标签: node.js graphql body-parser


【解决方案1】:

为了帮助正在使用 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/" 
  )
);

【讨论】:

    【解决方案2】:

    你在使用graphql-express npm 包吗?

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

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

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

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

    【讨论】:

    • 您好,感谢您的回复,我正在使用“graphql”模块,而不是“graphql-express”模块。
    • 啊,好有趣。通常你会同时使用这两个包。 graphql 包处理模式、类型、解析器等,而express-graphql 采用从graphql 包创建的模式并通过快速网络服务器将其公开到互联网。
    • 您好,您提供的链接未找到,请更新。
    【解决方案3】:

    对我来说,我指定了上传并且它起作用了:

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2012-07-12
      • 2016-06-10
      相关资源
      最近更新 更多