当前位置: 首页 > 知识库问答 >
问题:

PayloadTooLargeError:请求实体太大

楚雪松
2023-03-14

我得到了以下错误与body Parser:

PayloadTooLargeError: request entity too large
at readStream (/root/server/node_modules/raw-body/index.js:155:17)
at getRawBody (/root/server/node_modules/raw-body/index.js:108:12)
at read (/root/server/node_modules/body-parser/lib/read.js:77:3)
at urlencodedParser (/root/server/node_modules/body-parser/lib/types/urlencoded.js:116:5)
at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13)
at /root/server/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12)
at next (/root/server/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/root/server/node_modules/body-parser/lib/types/json.js:118:7)
at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13)
at /root/server/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12)
at next (/root/server/node_modules/express/lib/router/index.js:275:10)
at initialize (/root/server/node_modules/passport/lib/middleware/initialize.js:53:5)
at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13)
at /root/server/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12)
at next (/root/server/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/root/server/node_modules/body-parser/lib/types/json.js:118:7)

代码如下

const express = require("express");
const bodyParser = require('body-parser');

function setEntity(req, res) {
   // something....
}

module.exports = (app) => {

  const router = new express.Router();

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

  router.use('/set/', (req, res) => {
    setEntity(req, res);
  });

  return router;
};

好像和这个问题差不多

所以我尝试了这三种解决方案。

1.

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

2.

app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));

3.

app.use(bodyParser.json({limit:1024*1024*20, type:'application/json'}));
app.use(bodyParser.urlencoded({extended:true,limit:1024*1024*20,type:'application/x-www-form-urlencoding' }));

但结果没有改变。

另一个设置如下所示

nginx has this setting : client_max_body_size 200M;
data size is under 500kb (json).
express : 4.15.3
body-parser : 1.18.2

我不知道为什么我不能更改限制数据大小。

共有3个答案

齐阳
2023-03-14

它们都不适合我,我不能通过写这些来改变限制

app.use(express.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))
app.use(express.json({ limit: "50mb", extended: true, parameterLimit: 50000 }))

您可以从node_modules\body parser\lib\types\json更改限制。js

? bytes.parse(opts.limit || '100kb') to  ? bytes.parse(opts.limit || '50mb')
孙佑运
2023-03-14

控制最大请求主体大小就可以了,但是,您不再需要主体解析器了。使用新的Express实现,而不是使用正文解析器中间件:

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

你可以在这里找到完整的文档。

葛阳华
2023-03-14

我的问题是因为我有应用程序。使用(express.json())以及

app.use(bodyParser.json({ limit: "50mb" }))

app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))

我在移除app.use(express.json())后解决了它。希望它能帮助有同样问题的人。

 类似资料:
  • 我正试图将一个保存到一个嵌套中。但是当我尝试这么做时,服务器崩溃了,这就是我在控制台上看到的问题。日志: 有一件事是JSON请求的大小是1095922字节,在Nest中有人知道怎么做吗。js是否增加有效请求的大小?谢谢

  • 问题内容: 在我的CakePHP网站之一中,出现此错误。 请求的实体太大 我不知道是什么问题。我认为我通过表单发布的数据太大。我在搜索引擎中进行了搜索,结果发现我必须增加搜索量。默认情况下,我认为它设置为8M。 但是不知道如何增加CakePHP以及如何做? 谢谢。 问题答案: 并且是PHP.ini设置。您可以直接在PHP.ini中或通过设置它们。我不知道是否也可以使用一些Cake-internal

  • 我已经用编写了一个WCF服务。NET 4.0,它托管在我的Windows 7Ultimate系统上,带有IIS 7.5。其中一个服务方法有一个'object'作为参数,我正试图发送一个包含图片的字节[]。只要这张图片的文件大小小于约48KB,一切正常。但是,如果我试图上传更大的图片,WCF服务将返回一个错误:

  • 问题内容: 我收到express的以下错误: 我正在使用meanstack。我的express.js中有以下使用声明 在提琴手中,我可以看到content-length标头,其值为:1078702 我相信这是八位字节,这是1.0787兆字节。 我不知道为什么express不让我发布以前在另一个未使用均值堆栈项目结构的express项目中发布的json数组。 问题答案: 最近我遇到了相同的错误,发现

  • 对工作或替代解决方案有什么想法吗?

  • 我收到以下错误: 我在用MeanStack。我的Express.js中有以下use语句 在fiddler中,我可以看到值为:1078702的content-length头 我相信这是以八位字节为单位的,这是1.0787兆字节。 我不知道为什么express不允许我在另一个express项目中发布我之前发布的json数组,该项目没有使用mean stack项目结构。