ya9*_*net 4 javascript http node.js express
我在bodyParser中遇到以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
代码如下
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;
};
Run Code Online (Sandbox Code Playgroud)
似乎与此问题类似
所以我尝试了这三种解决方案。
1。
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
Run Code Online (Sandbox Code Playgroud)
2。
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
Run Code Online (Sandbox Code Playgroud)
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' }));
Run Code Online (Sandbox Code Playgroud)
但结果没有改变。
另一个设置如下
nginx has this setting : client_max_body_size 200M;
data size is under 500kb (json).
express : 4.15.3
body-parser : 1.18.2
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我不能更改限制数据大小。
ric*_*ick 21
控制最大请求正文大小可以解决问题,但是,您不再需要正文解析器。不使用 body-parser 中间件,而是使用新的 Express 实现:
app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb', extended: true, parameterLimit: 50000}));
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到完整的文档。
小智 9
我的问题是因为我曾经app.use(express.json())也曾经
app.use(bodyParser.json({ limit: "50mb" }))
Run Code Online (Sandbox Code Playgroud)
和
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))
Run Code Online (Sandbox Code Playgroud)
删除后我解决了app.use(express.json())。希望它对遇到同样问题的人有所帮助。
小智 5
它们都不适合我,我无法通过编写这些来改变限制
app.use(express.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))
app.use(express.json({ limit: "50mb", extended: true, parameterLimit: 50000 }))
Run Code Online (Sandbox Code Playgroud)
您可以从node_modules\body-parser\lib\types\json.js更改限制
? bytes.parse(opts.limit || '100kb') to ? bytes.parse(opts.limit || '50mb')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3876 次 |
| 最近记录: |