sAc*_*re. 10 javascript node.js body-parser
我有一项任务是通过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 }));
Run Code Online (Sandbox Code Playgroud)
错误信息:
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)
Run Code Online (Sandbox Code Playgroud)
所以,谁能告诉我哪里出错了.任何建议都会有所帮助.Thanx提前.
And*_*rew 17
正如其他人提到的,你需要设置parameterLimit处理"太多参数"错误.您可能还需要将其设置limit为更大的尺寸以避免加载大小错误.对于CSV,将应用urlencoded限制,但其他人也可能也想要设置JSON限制.除非代码中有其他位置覆盖这些设置,否则以下设置将起作用:
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 1000000}));
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您根本没有使用它parameterLimit,正如在您发布链接的博客中所指出的那样.
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: false,
parameterLimit: 1000000 // experiment with this parameter and tweak
}));
Run Code Online (Sandbox Code Playgroud)
我不确定你们在哪里测试你的API,但对我来说这是因为我在Postman中设置了Content-Type标题application/x-www-form-urlencoded.一旦我删除了标题并form-data在正文部分下使用,它就解决了这个问题.确保form-data在上传文件时始终使用.希望能帮助到你...