Node.js 有没有办法使ExpressJS记录运行时错误?

Node.js 有没有办法使ExpressJS记录运行时错误?,node.js,express,error-handling,Node.js,Express,Error Handling,我最近遇到了一个问题,我的一条快速路径被挂起,我花了很长时间才最终发现我的一个函数调用中有一个输入错误,所以它试图调用一个不存在的函数 例如: router.get('/example', function(req, res) { UserService.nonExistentFunction(); res.status(200).send(); }); 对我来说,这感觉就像是我的日志中以运行时异常的形式出现的,就像拇指酸痛一样。然而,服务器什么也没做,请求只是静静地挂起,没有

我最近遇到了一个问题,我的一条快速路径被挂起,我花了很长时间才最终发现我的一个函数调用中有一个输入错误,所以它试图调用一个不存在的函数

例如:

router.get('/example', function(req, res) {
    UserService.nonExistentFunction();
    res.status(200).send();
});
对我来说,这感觉就像是我的日志中以运行时异常的形式出现的,就像拇指酸痛一样。然而,服务器什么也没做,请求只是静静地挂起,没有提示出了什么问题


是否有更好的方法捕获这些伪类型错误?

您可以在Express中定义自己的错误处理程序。 根据您的性能,您可以在控制台或文件中记录错误。在我的应用程序中,我正在做这样的事情

import debug = require('debug');
var app = module.exports = express();
var errorLogger = debug('error');

// Error handling
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);

// Handle 404
app.use(function(req, res, next) {
  res.status(404).send('Sorry cant find that!');
});


function logErrors(err, req, res, next) {
  errorLogger(err.stack);
  next(err);
}

function clientErrorHandler(err, req, res, next) {
  if (req.xhr) {
    res.status(500).send({ error: 'Something failed!', status: 500 });
  } else {
    next(err);
  }
}

function errorHandler(err, req, res, next) {
  res.status(500);
  res.render('error', { error: err, status: 500 });
}

哦,哇,我从文档中得到了几乎完全相同的代码,但它不起作用,因为它不是调用链中的最后一件事,所以错误还没有发生,因此请求被挂起。现在一切正常,谢谢!