2016-04-19 14 views
7

Kullanıcı verilerini csv dosyası yoluyla toplu olarak yüklemek için bir görevim var. nodejs ve express çerçevesini kullanıyorum. 60 ila 70 satır içeren csv dosyası gönderdiğimde iyi çalışıyor, ancak 70 satırı aştığında sunucu hatası çok fazla parametre vermeye başladı. Bazı araştırmalar sonra ben vücut ayrıştırıcı boyutu sorun olduğu sonucuna vardım, bu yüzden ben This blog çalıştı, ama çalışmadı hata hala aynı.Node.js hata: çok fazla parametre Toplu veri yüklenirken hata var

var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
app.use(cookieParser()); 
app.use(bodyParser({limit: '50mb'})); 
app.use(bodyParser.json({limit: '50mb'})); 
app.use(bodyParser.urlencoded({ extended: false })); 

Hata mesajı: i yanlış gidiyorum

2016-04-19T10:29:45.299Z - error: [req#d3a1fa1a-278e-496e-9cb1-b3a944e3d1c8/app] [App] Error: too many parameters Error: too many parameters 
    at queryparse (d:\Git\gap-vm 13416\node_modules\body-parser\lib\types\urlencoded.js:119:17) 
    at parse (d:\Git\gap-vm 13416\node_modules\body-parser\lib\types\urlencoded.js:64:9) 
    at d:\Git\gap-vm 13416\node_modules\body-parser\lib\read.js:91:18 
    at IncomingMessage.onEnd (d:\Git\gap-vm 13416\node_modules\raw-body\index.js:136:7) 
    at IncomingMessage.g (events.js:273:16) 
    at emitNone (events.js:80:13) 
    at IncomingMessage.emit (events.js:179:7) 
    at endReadableNT (_stream_readable.js:906:12) 
    at nextTickCallbackWith2Args (node.js:474:9) 
    at process._tickCallback (node.js:388:17) 

Yani, herkes bana söyleyebilir

burada vücut ayrıştırıcı benim kodudur. Herhangi bir öneri yardımcı olacaktır. Thanx önceden.

+0

Herhangi bir çözüm buldunuz mu? –

cevap

5

Kodunuzda, bağlı olduğunuz blogda olduğu gibi işaret edildiği gibi parameterLimit'u kullanmıyorsunuz.

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ 
    extended: false, 
    parameterLimit: 1000000 // experiment with this parameter and tweak 
})); 
+0

@ Francesco aslında bu kodu daha önce denedim, ancak çalışma değildi o yüzden ben onu orijinaline döndürdüm. –

+0

"bodyParser.urlencoded" katman yazılımınız için hem 'limit' hem de 'parameterLimit 'ayarlamayı denediniz mi? [Body-parser docs] 'a göre (https://github.com/expressjs/body-parser#bodyparserurlencodedoptions) yalnızca 5 ayar vardır: 'inflate',' limit', 'parameterLimit',' type', 'doğrulamak' –

+0

benim için çalışmıyor ya da –

4

millet, API test ediyoruz nerede emin değilim ama Postman içinde application/x-www-form-urlencoded için Content-Type başlığını ayarlama çünkü benim için öyleydi. Başlığı kaldırdıktan ve gövde bölümünde form-data kullandıktan sonra sorunu çözdü. Dosyaları yüklerken her zaman form-data'u kullandığınızdan emin olun. Yardım edin ...

+0

Mükemmel! Ben de aynı noktayı kaçırdım. –

+0

çalıştı, bugün zamanımı çok kurtardın, teşekkürler dostum! – Thecave3

7

Diğerleri gibi, "çok fazla parametre" hatasıyla uğraşmak için parameterLimit değerini ayarlamanız gerekir. Yük boyutu hatasından kaçınmak için limit'u daha büyük bir boyuta ayarlamanız gerekebilir. CSV durumunda, urlen kodlanmış sınırlar uygulanacak, ancak diğerleri de JSON limitlerini ayarlamak isteyebilir. Aşağıdaki ayar, bu ayarların geçersiz kıldığı başka bir yer olmadığı sürece çalışmaz:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({limit: '50mb', parameterLimit: 1000000})); 
app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 1000000})); 
İlgili konular