Я пытаюсь преобразовать существующий проект node.js из javascript в typescript. Я использовал ловушку ошибок 404 по умолчанию из шаблона Visual Studio Express 4:
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
Однако я получаю следующее сообщение об ошибке: Свойство "status" не существует в типе "Ошибка".
Я получаю подобное сообщение, если попытаюсь вызвать свойство Error.stack: Свойство 'stack' не существует в типе 'Error'.
Кто-нибудь знает, что здесь происходит?
Изменить: Стив Фентон указывает, что я могу просто поместить статус ошибки в объект ответа. Однако мой механизм обработки ошибок использует двухэтапный процесс:
- Создайте ошибку 404 и установите ее статус
-
Передайте его следующему родовому обработчику:
app.use(function (err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); });
Таким образом, состояние ошибки сначала устанавливается на объект Error, а затем возвращается обработчиком ошибок, чтобы решить, как обрабатывать ошибку.