783 Stimmen

Fehler: Anforderungssatz zu groß

Ich erhalte den folgenden Fehler mit Express:

Fehler: Anforderungsentität zu groß
    at module.exports (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/node_modules/raw-body/index.js:16:15)
    at json (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/json.js:60:5)
    at Object.bodyParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:53:5)
    at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.cookieParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)
    at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.logger (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/logger.js:158:5)
    at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.staticMiddleware [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/static.js:55:61)
    at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15)
TypeError: /Users/michaeljames/Documents/Projects/Proj/mean/app/views/includes/foot.jade:31
    29| script(type="text/javascript", src="/js/socketio/connect.js")
    30| 
  > 31| if (req.host='localhost')
    32|     //Livereload script rendered 
    33|     script(type='text/javascript', src='http://localhost:35729/livereload.js')  
    34| 

Kann Eigenschaft 'host' von undefined nicht festlegen
    at eval (eval at  (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:152:8), :273:15)
    at /Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:153:35
    at Object.exports.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:197:10)
    at Object.exports.renderFile (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:233:18)
    at View.exports.renderFile [as engine] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:218:21)
    at View.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/view.js:76:8)
    at Function.app.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/application.js:504:10)
    at ServerResponse.res.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/response.js:801:7)
    at Object.handle (/Users/michaeljames/Documents/Projects/Proj/mean/config/express.js:82:29)
    at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:188:17)

POST /api/0.1/people 500 618ms

Ich verwende meanstack. Ich habe die folgenden Verwendungsanweisungen in meinem express.js

//Set Request Size Limit
app.use(express.limit(100000000));

In Fiddler kann ich den Inhaltslängenheader mit einem Wert von: 1078702 sehen

Ich glaube, dies sind Oktette, das sind 1,0787 Megabyte.

Ich habe keine Ahnung, warum Express mich nicht den JSON-Array posten lässt, den ich zuvor in einem anderen Express-Projekt gepostet hatte, das nicht die Projektstruktur des Mean-Stack verwendet hat.

22voto

Mohanad Obaid Punkte 331

In meinem Fall .. das Festlegen von parameterLimit:50000 hat das Problem behoben

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

17voto

Vivek22 Punkte 796

Das folgende hat für mich funktioniert... Einfach verwenden

app.use(bodyParser({limit: '50mb'}));

das ist alles.

Alle oben genannten versucht und keiner hat funktioniert. Festgestellt, dass selbst wenn wir es wie folgt verwenden,

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

Es wird nur die erste app.use(bodyParser()); Zeile definiert und die beiden folgenden Zeilen wurden ignoriert.

Referenz: https://github.com/expressjs/body-parser/issues/176 >> siehe 'dougwilson commented on Jun 17, 2016'

16voto

Kent Punkte 401

Die folgende Einstellung hat für mich funktioniert

Express 4.16.1

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

Nginx

client_max_body_size 50m;
client_body_temp_path /data/temp;

16voto

user1709076 Punkte 2300

2016, keines der oben genannten funktionierte für mich, bis ich 'type' zusätzlich zu 'limit' für Bodyparser explizit gesetzt habe, Beispiel:

  var app = express();
  var jsonParser       = bodyParser.json({limit:1024*1024*20, type:'application/json'});
  var urlencodedParser = bodyParser.urlencoded({ extended:true,limit:1024*1024*20,type:'application/x-www-form-urlencoded' })

  app.use(jsonParser);
  app.use(urlencodedParser);

15voto

Jaime Fernandez Punkte 910

In meinem Fall lag das Problem an der Nginx-Konfiguration. Um es zu lösen, muss ich die Datei /etc/nginx/nginx.conf bearbeiten und diese Zeile innerhalb des Serverblocks hinzufügen:

client_max_body_size 5M;

Starten Sie Nginx neu und das Problem ist behoben

sudo systemctl restart nginx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X