Düğüm JS - Express İstek varlığı çok büyük
Express aşağıdaki hatayı alıyorum:
Error: request entity too large
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|
Cannot set property 'host' of undefined
at eval (eval at <anonymous> (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:152:8), <anonymous>: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
Am meanstack kullanıyorum. Benim express.js aşağıdaki kullanım ifadeleri var
//Set Request Size Limit
app.use(express.limit(100000000));
Değerli içerik-uzunluk Başlığı görebiliyorum fiddler içinde: 1078702
Bu sekizli, bu 1.0787 megabayt olduğunu düşünüyorum.
İfade bana yani yığın proje yapısını kullanarak değil, daha önce başka bir ifade projede gönderme yapıyordum json dizi sonrası izin değil neden hiçbir fikrim yok.
CEVAP
Aynı hatayı geçenlerde yaptım ve bulduğum tüm çözümler işe yaramadı.
Bazı kazma sonra, app.use(express.bodyParser({limit: '50mb'}));
ayarı doğru limit yaptığını buldum.
console.log('Limit file size: ' limit);
node_modules/express/node_modules/connect/lib/middleware/json.js:46
ve yeniden bir düğüm eklerken, bu konsol çıktısını alıyorum:
Limit file size: 1048576
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
Limit file size: 52428800
Express server listening on port 3002
connect
modülü yüklenirken ilk başta, sınırı (1048576 bayt) 1 MB olarak ayarlanmış olduğunu görüyoruz. Bu sınır koyduğum zaman, console.log
tekrar aradı ve bu sefer sınırı 52428800 (50mb). Ancak, ben hala 413 Request entity too large
.
Sonra node_modules/express/node_modules/connect/node_modules/raw-body/index.js:10
16 *ekledim ve başka bir satırını büyük bir istekle rota (hata çıktı önce) çağrılırken konsol gördüm :
Limit file size: 1048576
Bu şekilde, bir yerde, connect
sıfırlar sınırı parametre ve biz belirtilen ne yok sayıyor anlamına gelir. Rota tanımında bodyParser
parametreleri belirterek ayrı ayrı, ama ya hiç şans çalıştım.
Kalıcı olarak ayarlamak için herhangi bir doğru yolu bulmak, olabilir "patch" modülü doğrudan içinde. Eğer kullanıyorsanız 3.4.4, node_modules/express/node_modules/connect/lib/middleware/json.js
satır 46 bu İfade ekleyin :
limit = 52428800; // for 50mb, this corresponds to the size in bytes
Satır sayısı hızlı bir aynı sürümünü şunu bile farklı olabilir. Lütfen bu olduğunu unutmayınkötü uygulamave olacaktırüzerinesizin modül güncelleme.
Yani bu geçici bir çözüm için çalışıyor, ama bir çözüm (veya modülü modülü bir sorun olma ihtimaline karşı sabit) olarak kodunuzu buna göre güncellemelisiniz.
Bu sorun hakkında an issue on their Github açtım.
[Düzenle]
Biraz araştırma ve testlerden sonra, hata ayıklama, app.use(express.bodyParser({limit: '50mb'}));
ama eklediğim buldumsonraapp.use(express.json());
. Express script çalışırken karşılaştığı ilk çözümleyici express.json()
çünkü 1mb küresel sınırı ayarlayın. Yukarıda bodyParser
hareket işe yaradı.
Bu, bodyParser()
Connect yöntemini 3.0 kaldırılmış olacak ve kullanılmamalıdır. " dedi. Bunun yerine, ayrıştırıcıları explicitely senin gibi çok bildirmeniz gerekir :
app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
Durumda çok parçalı (dosya yükleme için) this post görmek gerekir.
İkinci düzenleme
express.json()
express.urlencoded()
yerine 4, Express body-parser modülü gerektirir gerekir, şu şekilde: json()
urlencoded()
yöntemlerini kullandığını unutmayın
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
Eğer extended
seçeneği açıkça bodyParser.urlencoded()
tanımlı ise bir uyarı (body-parser deprecated undefined extended: provide extended option
) atmak olacak. Bu seçenek bir sonraki sürümü gerekli olacak çünküdeğilartık isteğe bağlı olacak. extended
seçeneği hakkında daha fazla bilgi için, lütfen body-parser
42 *bakın.
HTTP Node.js Express içinde İstek OLSU...
Alıcı "en büyük istek uzunluğu aş...
Otomatik düğüm ile bağlantısı/yeniden ...
Geri dönmek için JSON kullanarak düğüm...
Düğüm / Express, zaten EADDRİNUSE Adre...