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

Node.js error: too many parameters Error while uploading bulk data

本文关键字:数据 出错 错误 js 参数 太多 Node      更新时间:2023-09-26

我的任务是通过csv文件批量上传用户数据。我使用的是nodejsexpress框架。当我提交具有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。

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

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

在您的代码中,您根本没有使用parameterLimit,正如您链接的博客中所指出的那样。

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

我不确定你们在哪里测试API,但对我来说,这是因为我在Postman中将Content-Type头设置为application/x-www-form-urlencoded。一旦我删除了标题并在正文部分下使用了form-data,它就解决了这个问题。上传文件时,请确保始终使用form-data。希望它能帮助。。。