2015-08-19 3 views
-1

В настоящее время я использую bodyParser с Express для приема запросов JSON. Всякий раз, когда я передаю неправильно сформированный объект JSON, он возвращает неприятную ошибку через конечную точку и записывает ее на консоль. Ниже приведена ошибка:bodyParse error suppression

SyntaxError: Unexpected string 
    at Object.parse (native) 
    at parse (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/lib/types/json.js:88:17) 
    at /Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/lib/read.js:108:18 
    at done (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/node_modules/raw-body/index.js:239:14) 
    at IncomingMessage.onEnd (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/node_modules/raw-body/index.js:285:7) 
    at IncomingMessage.g (events.js:199:16) 
    at IncomingMessage.emit (events.js:104:17) 
    at _stream_readable.js:908:16 
    at process._tickCallback (node.js:355:11) 
SyntaxError: Unexpected string 
    at Object.parse (native) 
    at parse (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/lib/types/json.js:88:17) 
    at /Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/lib/read.js:108:18 
    at done (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/node_modules/raw-body/index.js:239:14) 
    at IncomingMessage.onEnd (/Users/ddibiase-mbp/Documents/Projects/theride_api/node_modules/body-parser/node_modules/raw-body/index.js:285:7) 
    at IncomingMessage.g (events.js:199:16) 
    at IncomingMessage.emit (events.js:104:17) 
    at _stream_readable.js:908:16 
    at process._tickCallback (node.js:355:11) 

Мне интересно, как я могу подавить ошибку или исправить это полностью. Я исследовал ошибку, но не могу найти никаких конкретных рекомендаций по ее исправлению.

ответ

2

Распространено объявить error handler с курьерским:

app.use(function(err, req, res, next) { 
    ... 
    return res.sendStatus(500); 
}); 

Это будет также поймать ошибки, возникающие в ПО промежуточного слоя, как body-parser.

+0

Хммм, это не догоняет ошибку. – ddibiase

+0

@ddibiase вы добавили его в качестве последнего промежуточного программного обеспечения вашего приложения, как описано? – robertklep

+0

Я уверен, посмотрите: app.use (bodyParser.json()); app.use (bodyParser.urlencoded ({ extended: true })); app.use (функция (ERR, REQ, разреш, следующая) { console.error (err.stack); res.status (500) ({Пошлите ошибок: [ 'invalid_request' ] }) ; }); – ddibiase