【问题标题】:Node Express - PayloadTooLargeError: request entity too largeNode Express - PayloadTooLargeError:请求实体太大
【发布时间】:2021-08-07 03:20:51
【问题描述】:

当我尝试上传大于 1M 的文件(.docx、.xlsx 等)时出现以下错误

PayloadTooLargeError: request entity too large
at readStream (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\raw-body\index.js:155:17)
at getRawBody (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\raw-body\index.js:108:12)
at read (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\body-parser\lib\read.js:77:3)
    ...

代码如下

...

var mongoose = require('mongoose')
var express = require("express");
var app = require('./app');

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

//3.
var user_mng = 'user';
var pass_mng = 'pass';

//server
var port = process.env.PORT || 9090;
mongoose.Promise = global.Promise;
mongoose.connect(`mongodb://hostname:0101/dbname`, 
    {
        auth: { "authSource": "user" },
        user: user_mng,
        pass: pass_mng,
        useMongoClient: true})
    .then(()=>{
        const server = app.listen(port, () => {
            const host_srv = server.address().address;
            const port_srv = server.address().port;
        });
    })
    .catch(err=> console.log(err));

package.json:

"dependencies": {
...
"body-parser": "^1.19.0",
"express": "^4.17.1",
...
}

所以我尝试了一些解决方案,但这些对我不起作用。

这个:

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

这个

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

还有这个:

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' }));

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    将您的 2 行 app.use 代码替换为:

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

    【讨论】:

    • 谢谢你的回答,但它对我不起作用
    • 你能分享你的整个剧本吗?
    • PayloadTooLargeError: getRawBody (C:\ Users\GoTor\Documents\Node\BackEnd\node_modules\raw-body\index.js:108:12) 在读取 (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\body-parser\lib\read. js:77:3) 在 urlencodedParser (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\body-parser\lib\types\urlencoded.js:116:5) 在 Layer.handle [as handle_request] (C :\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\layer.js:95:5)
    • 在 trim_prefix (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\index.js:317:13) 在 C:\Users\GoTor\Documents\ Node\BackEnd\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\index.js:335 :12) 在下一个 (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\index.js:275:10) 在 expressInit (C:\Users\GoTor\Documents\Node\BackEnd \node_modules\express\lib\middleware\init.js:40:5)
    • 在 Layer.handle [as handle_request] (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C :\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\index.js:317:13) 在 C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\ index.js:284:7 在 Function.process_params (C:\Users\GoTor\Documents\Node\BackEnd\node_modules\express\lib\router\index.js:335:12) 在下一个 (C:\Users\GoTor \Documents\Node\BackEnd\node_modules\express\lib\router\index.js:275:10)
    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 2019-03-17
    • 2019-11-27
    • 2022-11-27
    • 2018-06-10
    • 2021-12-16
    • 2020-01-25
    • 2013-03-15
    相关资源
    最近更新 更多