Erreur Node.js: trop de parameters Erreur lors du téléchargement de données en bloc

J’ai pour tâche de télécharger des données d’utilisateur en bloc via un fichier csv. J’utilise nodejs et express framework express . Lorsque je soumets un fichier csv contenant 60 à 70 lignes, cela fonctionne correctement, mais lorsqu’il dépasse 70 lignes, le nombre d’erreurs de serveur générées est trop élevé. Après quelques recherches, j’ai conclu que c’était peut-être le problème de la taille de l’parsingur de corps, alors j’ai essayé ce blog , mais cela n’a pas fonctionné. L’erreur est toujours la même.

voici mon code pour l’parsingur de corps:

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

Message d’erreur:

 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) 

Alors, quelqu’un peut-il me dire où je me trompe? Toute suggestion serait utile. Merci d’avance.

Comme d’autres le mentionnent, vous devez définir le parameterLimit pour traiter l’erreur “too many parameters”. Vous devrez peut-être également définir une limit supérieure pour éviter une erreur de taille de chargement. Dans le cas de CSV, les limites codées en url seront appliquées, mais d’autres voudront peut-être également définir les limites JSON. Le paramètre suivant fonctionnera à moins que d’autres codes dans le code ne remplacent ces parameters:

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

Dans votre code, vous n’utilisez pas du tout le parameterLimit settingLimit, comme indiqué dans le blog que vous avez lié.

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

Je ne sais pas trop où vous testez votre API, mais pour moi, c’est parce que j’ai défini l’en Content-Type tête Content-Type sur application/x-www-form-urlencoded dans Postman. Une fois que j’ai supprimé l’en-tête et utilisé les form-data sous la section body, le problème a été résolu. Assurez-vous de toujours utiliser form-data lors du téléchargement de fichiers. J’espère que ça aide…