web-dev-qa-db-ja.com

Node.jsエラー:パラメーターが多すぎますバルクデータのアップロード中にエラーが発生しました

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)

だから、誰かが私がどこで間違っているのか教えてもらえますか?どんな提案も役に立ちます。よろしくお願いします。

11
SachiN Ware.

他の人が言及しているように、「パラメータが多すぎます」エラーに対処するには、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}));
18
Andrew

リンクしたブログの投稿で指摘されているように、コードではparameterLimitをまったく使用していません。

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

APIをどこでテストしているかはわかりませんが、PostmanでContent-Typeヘッダーをapplication/x-www-form-urlencodedに設定したためです。ヘッダーを削除し、bodyセクションの下でform-dataを使用すると、問題は解決しました。ファイルをアップロードするときは、必ずform-dataを使用してください。それが役に立てば幸い...

6
RazorHead