Javascript Node.js错误:上传批量数据时参数过多错误

Javascript Node.js错误:上传批量数据时参数过多错误,javascript,node.js,body-parser,Javascript,Node.js,Body Parser,我的任务是通过csv文件批量上传用户数据。我正在使用nodejs和express框架。当我提交包含60到70行的csv文件时,它可以正常工作,但当它超过70行时,它开始给服务器错误提供太多参数。经过一些研究,我得出结论,这可能是身体解析器大小的问题,所以我尝试了,但它没有工作的错误仍然是一样的 以下是我的主体解析器代码: var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); ap

我的任务是通过csv文件批量上传用户数据。我正在使用
nodejs
express
框架。当我提交包含60到70行的csv文件时,它可以正常工作,但当它超过70行时,它开始给服务器错误提供太多参数。经过一些研究,我得出结论,这可能是身体解析器大小的问题,所以我尝试了,但它没有工作的错误仍然是一样的

以下是我的主体解析器代码:

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)

那么,谁能告诉我哪里出了问题。任何建议都会有帮助。Thanx提前。

在您的代码中,您根本没有使用
参数限制,正如您链接的博客中指出的那样

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

我不确定你们在哪里测试你们的API,但对我来说,这是因为我在Postman中将
内容类型
标题设置为
应用程序/x-www-form-urlencoded
。一旦我删除了标题并在body部分下使用了
表单数据
,它就解决了这个问题。上传文件时,确保始终使用
表单数据

希望它有帮助…

正如其他人提到的,您需要设置
参数限制来处理“参数太多”错误。您可能还需要将
限制设置为更大的大小,以避免加载大小错误。在CSV的情况下,将应用URL编码的限制,但其他人也可能希望设置JSON限制。除非代码中有其他位置覆盖这些设置,否则以下设置将起作用:

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

@Francesco实际上我以前尝试过这段代码,但它不起作用,所以我将其还原为原始代码。上面的代码不起作用。您是否尝试为
bodyParser.urlencoded
中间件设置
limit
parameterLimit
?根据,只有5种设置可用:
充气
限制
参数限制
类型
验证
找到解决方案了吗?将参数限制设置为bodyParser的选项。json()是错误的。看来你同意了。我从bodyParser.json()中删除了parameterLimit