Javascript Node.js错误:上传批量数据时参数过多错误
我的任务是通过csv文件批量上传用户数据。我正在使用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
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