Domain в node.js не ловит исключение от body-parser middleware.
Использую следующие вещи:
Обернул код сервера в модуль domain, но когда я хочу отослать body в некорректной форме, то получаю исключение. Странность в том, что модуль domain не отлавливает это исключение, и я получаю его как есть. Почему такое происходит? Как можно сделать так, чтобы domain отлавливал и ошибки от модуля. Пример кода:
var domain = require('domain');
var d = domain.create();
d.on('error', function(err) {
console.log(err.stack);
console.log("Something is bad");
});
d.run(function() {
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/', function(req, res) {
res.status(200).send('hello world');
});
app.listen(3000);
});
Пример передачи на сервер невалидного body:
curl -XPOST 'http://localhost:3000/' -d '{\"foo\": \"bar\"' -H "Content-Type:application/json" -v
Получаемая ошибка: SyntaxError: Unexpected token \ at Object.parse (native) at parse (C:\Users\User\Desktop\check\node_modules\body-parser\lib\types\json.js:88:17) at C:\Users\User\Desktop\check\node_modules\body-parser\lib\read.js:116:18 at invokeCallback (C:\Users\User\Desktop\check\node_modules\body-parser\node_modules\raw-body\index.js:262:16) at done (C:\Users\User\Desktop\check\node_modules\body-parser\node_modules\raw-body\index.js:251:7) at IncomingMessage.onEnd (C:\Users\User\Desktop\check\node_modules\body-parser\node_modules\raw-body\index.js:308:7) at IncomingMessage.emit (events.js:104:17) at _stream_readable.js:908:16 at process._tickDomainCallback (node.js:381:11) |
| Часовой пояс GMT +3, время: 12:20. |