2016-04-19 7 views
7

Ho un compito di caricare i dati degli utenti in massa tramite file CSV. Sto usando il framework nodejs e express. Quando invio file CSV con 60-70 righe funziona, ma quando supera le 70 righe inizia a dare all'errore del server troppi parametri. Dopo alcune ricerche ho concluso che potrebbe essere il problema della dimensione del parser corporeo, quindi ho provato This blog, ma non ha funzionato l'errore è sempre lo stesso.errore Node.js: troppi parametri Errore durante il caricamento dei dati bulk

Ecco il mio codice per il parser del corpo:

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

Messaggio di errore:

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) 

Così, qualcuno può dirmi dove sto andando male. Qualsiasi suggerimento sarebbe utile. Grazie in anticipo.

+0

hai trovato qualche soluzione? –

risposta

5

Nel codice che non si sta utilizzando l'parameterLimit a tutti, come ha sottolineato come nel blog Posted si è collegato.

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

@ Francesco in realtà ho provato questo codice prima, ma non funzionava così sono ritornato a original.Above codice non funziona. –

+0

Hai provato a impostare sia 'limite' che' parametroLimit' per il tuo middleware 'bodyParser.urlencoded'? Secondo [docs corpo-parser] (https://github.com/expressjs/body-parser#bodyparserurlencodedoptions), ci sono solo 5 le impostazioni disponibili: 'inflate',' limit', 'parameterLimit',' type', 'verify' –

+0

non funziona per me o –

4

non sono sicuro dove voi ragazzi stanno testando la vostra API, ma per me è stato perché ho impostato l'intestazione Content-Type a application/x-www-form-urlencoded in Postman. Una volta rimossa l'intestazione e utilizzato form-data nella sezione del corpo, ha risolto il problema. Assicurati di utilizzare sempre form-data durante il caricamento dei file. Spero che sia d'aiuto ...

+0

Perfetto! Ho perso lo stesso punto anche io. Ha funzionato –

+0

Oggi mi hai salvato molto del mio tempo, grazie amico! – Thecave3

7

Come altri citano, sarà necessario impostare parameterLimit per gestire l'errore "troppi parametri". Potrebbe anche essere necessario impostare limit su una dimensione più grande per evitare un errore nella dimensione del caricamento. Nel caso di CSV, verranno applicati i limiti urlocati, ma altri potrebbero anche voler impostare anche i limiti JSON. Le seguenti impostazioni funzioneranno a meno che nel codice non siano presenti altre impostazioni che annullano queste impostazioni:

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