Express 3 ошибка промежуточного программного обеспечения не вызывается

Я пытаюсь настроить обработку ошибок для моего экспресс-приложения и столкнулся со следующей проблемой.

Я определил промежуточное ПО для ошибок и добавил его как последнее промежуточное ПО:

// error handler
app.use(function(err, req, res, next) {

    console.log('JUST TESTING. ERROR HANLDER HAS BEEN CALLED...');
    next(err);
});

Теперь я ожидаю, что это промежуточное программное обеспечение будет вызываться при возникновении ошибки:

app.get('/datenschutz', function(req, res, next){
        return next(new Error('Just testing')); // handle everything here
    });

Однако мое промежуточное программное обеспечение никогда не называется! Однако браузер отображает трассировку стека. Кажется, что есть другое промежуточное программное обеспечение, которое перехватывает эту ошибку и обрабатывает ее, прежде чем я могу что-либо с этим поделать.

Проблема в том, что я понятия не имею, где можно определить это промежуточное ПО, так как у меня очень простая настройка:

// setup ssl for local testing
var
    app = express();

app.
    use(express.static(__dirname + '/public')).
    use(express.bodyParser()).
    use(express.cookieParser());

Почему мое промежуточное программное обеспечение для обработки ошибок не вызывается? Где это 'дефолт' обработка ошибок происходит?

Спасибо!

* РЕДАКТИРОВАТЬ * Я вижу, что промежуточное ПО действительно работает. Однако это тот случай, если я вызываю его из другой функции промежуточного программного обеспечения. Однако он не вызывается, если ошибка происходит внутри функции, определенной как экспресс-маршрут (GET, POST и т. Д.). Это очень странно. Если я добавлю свое промежуточное программное обеспечение для ошибок в обратные вызовы маршрута, оно будет работать:

app.get('/testError', function(req, res, next){
        return next(new Error('Just testing')); // handle everything here
    }, function(err,req,res,next) {
        console.log('This error handler is called!!');
        return next();
    });

* РЕДАКТИРОВАТЬ 2 - НАЙТИ ПРИНИМАЕМЫЕ ВРЕМЕННЫЕ РЕШЕНИЯ ** Я удивлен, что это должно быть сделано таким образом. Поскольку я прочитал много записей / вопросов об обработке ошибок в экспрессе и никогда не находил эту возможность упомянутой. Однако кажется, что если ошибка возникает внутри обратного вызова маршрута, обычные обработчики ошибок промежуточного программного обеспечения не будут ее обнаруживать. Вам нужно будет определить обработчик ошибок на уровне маршрута.

app.all('*', function(err,req,res,next) {
        console.log('This is a global error handler at route level....');
        return next(err);
    });

Ответы на вопрос(3)

Ваш ответ на вопрос