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.

12voto

Yilmaz Punkte 12859

Dieses Problem tritt in zwei Fällen auf:

1- Die Anfrage ist zu groß und der Server kann diese Daten nicht verarbeiten. Das wird es bedienen

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

2- req.cookies ist zu groß. Beim Testen verschiedener Next.js-Anwendungen im selben Browser startete jede App jedes Mal auf einem anderen Port, wenn andere Apps liefen. Die gleiche App könnte bei jedem Start im Bereich von Port 3000-3005 landen. Das bedeutet, wenn Ihre App einen Cookie speichert, wird dieser Cookie für jeden Port gespeichert. Angenommen, Sie haben 5 verschiedene Apps auf localhost:3000 gestartet, und jede hat einen Cookie gespeichert. Wenn Sie eine Anfrage stellen, werden alle Cookies an das Anfrageobjekt angehängt. In diesem Fall können Sie nicht einmal eine kleine Größe von post.body verarbeiten. Die Lösung besteht darin, alle Cookies zu löschen

Gib eine Bildbeschreibung hier ein

11voto

Boaz Punkte 18890

Ein etwas anderer Ansatz - das Nutzdatenpaket ist zu groß

Bisher befassten sich alle hilfreichen Antworten damit, das Nutzdatenlimit zu erhöhen. Es könnte jedoch auch sein, dass das Nutzdatenpaket tatsächlich zu groß ist, aber ohne guten Grund. Wenn es keinen gültigen Grund dafür gibt, solltest du untersuchen, warum es überhaupt so aufgebläht ist.

Unsere eigene Erfahrung

Zum Beispiel hat in unserem Fall eine Angular-App gierigerweise ein gesamtes Objekt im Nutzdatenpaket gesendet. Als eine aufgeblähte und überflüssige Eigenschaft entfernt wurde, wurde die Größe des Nutzdatenpakets um den Faktor 100 reduziert. Dies verbesserte deutlich die Leistung und löste den 413 Fehler.

9voto

Maulik Patel Punkte 717

Nach so vielen Versuchen habe ich meine Lösung gefunden

Ich habe diese Zeile kommentiert

app.use(bodyParser.json());

und ich habe hinzugefügt

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

Dann hat es funktioniert

8voto

Akashgreninja Punkte 521

Das Hinzufügen dieser einen Zeile sollte das tatsächlich lösen

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

Empfehlen Sie auch, das gesamte Bild an den Backend zu senden und es dort zu konvertieren, anstatt die Daten vom Frontend zu senden

7voto

Manish Punkte 491

Übermitteln Sie die folgenden Konfigurationen an Ihren Server, um die Anforderungsgröße zu vergrößern.

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

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