Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2015, 09:20
Интересующийся
Отправить личное сообщение для frying Посмотреть профиль Найти все сообщения от frying
 
Регистрация: 11.02.2013
Сообщений: 12

Domain в node.js не ловит исключение от body-parser middleware.
Использую следующие вещи:
  • 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)

Последний раз редактировалось frying, 30.09.2015 в 09:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Parser на Node.js HunterNomnad Node.JS 8 29.03.2016 13:51