json オブジェクトを送信するときに bodyParser() ミドルウェアからエラーをキャッチしたいのですが、一般的な 400 エラーではなくカスタム応答を送信したいので無効です。
これは私が持っているもので、動作します:
app.use (express.bodyParser ());
app.use (function (error, req, res, next){
//Catch bodyParser error
if (error.message === "invalid json"){
sendError (res, myCustomErrorMessage);
}else{
next ();
}
});
しかし、これは非常に醜いアプローチのように思えます。なぜなら、将来の Express バージョンで変更される可能性があるエラー メッセージを比較しているからです。bodyParser() エラーをキャッチする他の方法はありますか?
編集:
これは、リクエストの本文に無効な json が含まれている場合のエラーです。
{
stack: 'Error: invalid json\n at Object.exports.error (<path>/node_modules/express/node_modules/connect/lib/utils.js:55:13)\n at IncomingMessage.<anonymous> (<path>/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71)\n at IncomingMessage.EventEmitter.emit (events.js:92:17)\n at _stream_readable.js:872:14\n at process._tickDomainCallback (node.js:459:13)',
arguments: undefined,
type: undefined,
message: 'invalid json',
status: 400
}
きれいに印刷されたスタック:
Error: invalid json
at Object.exports.error (<path>/node_modules/express/node_modules/connect/lib/utils.js:55:13)
at IncomingMessage.<anonymous> (<path>/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at _stream_readable.js:872:14
at process._tickDomainCallback (node.js:459:13)