मैं bodyParser() मिडलवेयर से त्रुटि को पकड़ने के लिए जब मैं एक json वस्तु भेज चाहते हैं और यह अमान्य है क्योंकि मैं एक सामान्य 400 त्रुटि के बजाय कोई कस्टम प्रतिक्रिया भेजना चाहते हैं।पकड़ने एक्सप्रेस bodyParser त्रुटि
यह है कि मैं क्या है और यह काम करता है:
app.use (express.bodyParser());
app.use (function (error, req, res, next){
//Catch bodyParser error
if (error.message === "invalid json"){
sendError (res, myCustomErrorMessage);
}else{
next();
}
});
लेकिन क्योंकि मैं जो भविष्य एक्सप्रेस संस्करणों में बदल सकता है त्रुटि संदेश तुलना कर रहा हूं यह एक बहुत ही बदसूरत दृष्टिकोण मुझे लगता है। BodyParser() त्रुटियों को पकड़ने का कोई और तरीका है?
संपादित करें:
{
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)
यह एक समाधान नहीं है। आप इस बात पर विचार नहीं करते कि इस कोड से पहले एक और मिडलवेयर हो सकता है।यदि आप इस तरह के कुछ अपवाद को पकड़ते हैं तो इससे अप्रत्याशित स्थिति हो सकती है। कम से कम यह लिखना बेहतर है: 'app.use (फ़ंक्शन (त्रुटि, req, res, अगला) {/ * शटडाउन नोड * /}; app.use (bodyParser.json()); app.use (फ़ंक्शन (त्रुटि, req, res, next) {/ * if.status == 4 ** फिर json त्रुटि => res.status (400) .send(), अन्यथा शट डाउन नोड * /}); – Dao
डेंजर डेंजर, यह कैच उपरोक्त मिडलवेयर में कोई त्रुटि, जैसा कि @ दाओ ने कहा। असुर – light24bulbs