Node.js错误:太多参数上传批量数据时出错

我有一个任务,通过csv文件批量上传用户数据。 我正在使用nodejsexpress框架。 当我提交60到70行的csv文件它工作正常,但是当它超过70行时,开始给服务器错误太多的参数。 经过一番研究,我认为它可能是parsing器大小的问题,所以我尝试了这个博客 ,但它没有工作的错误仍然是一样的。

这里是我的身体parsing器的代码:

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

错误信息:

 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) 

那么,谁能告诉我我要去哪里? 任何build议都会有所帮助。 提前感谢。

在你的代码中,你根本没有使用parameterLimit ,就像在你发布的博客中指出的一样。

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

我不知道你们在testing你的API,但是对我来说,这是因为我在Postman中将Content-Type头设置为application/x-www-form-urlencoded 。 一旦我删除头部和身体部分下使用form-data ,它解决了这个问题。 上传文件时务必使用form-data 。 希望能帮助到你…

正如其他人所说,你需要设置parameterLimit来处理“太多的参数”错误。 您可能还需要将limit设置为较大的大小以避免加载大小错误。 在CSV的情况下,urlencoded限制将被应用,但其他人也可能想要设置JSON限制。 除非代码中有其他地方覆盖这些设置,否则以下设置将起作用:

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