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)
だから、誰かが私がどこで間違っているのか教えてもらえますか?どんな提案も役に立ちます。よろしくお願いします。
他の人が言及しているように、「パラメータが多すぎます」エラーに対処するには、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}));
リンクしたブログの投稿で指摘されているように、コードでは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
に設定したためです。ヘッダーを削除し、bodyセクションの下でform-data
を使用すると、問題は解決しました。ファイルをアップロードするときは、必ずform-data
を使用してください。それが役に立てば幸い...