Использую следующие вещи:
- windows 7 x64
- nodejs v. 0.12.2
- express v. 4.12.3
- body-parser v. 1.14.1
Обернул код сервера в модуль 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)