Javascript 无法在我的node express应用程序中触发主错误处理程序

Javascript 无法在我的node express应用程序中触发主错误处理程序,javascript,node.js,express,Javascript,Node.js,Express,我使用的是node express(4.15.2),使用express generator函数创建的默认错误处理程序来处理错误 代码是: const app = express(); app.set('port', config.enviroment.portNumber); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.

我使用的是node express(4.15.2),使用express generator函数创建的默认错误处理程序来处理错误

代码是:

const app = express();
app.set('port', config.enviroment.portNumber);
app.use(logger('dev'));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use(express.static(path.join(__dirname, config.client.app)));

app.post(config.route.postUploads, uploader.onUpload);

app.use(function (req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // this function is never called
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

const server = app.listen(app.get('port'), () => {
  const port = server.address().port;
});
在我的应用程序中,当我需要创建错误时,我会使用以下代码行:

new Error('Some custom error');
但从未调用错误处理程序

注意:错误处理程序放在最新的
应用程序之后。请使用
但放在
应用程序之前。请听


您知道什么会导致此问题以及如何解决它吗?

您需要将上述函数放在代码的最底层,因为路由的顺序很重要(请参见此)。另外,你需要像抛出新错误(“自定义错误”)一样抛出你的错误。

我找到了解决问题的简单方法,基本上我必须使用

抛出新错误(“某些自定义错误”)


一般来说,express遵循传递错误而不是抛出错误的方式,对于程序中的任何错误,最好将错误对象传递到“下一步”,并使用和错误处理程序,以便正确处理传递到下一步的所有错误。

我编辑了我的问题,添加了完整的源代码,很遗憾,我无法使用您的答案解决此问题。。。还有其他想法吗?您是否使用生成的express.js应用程序,没有修改任何内容?控制台或浏览器的屏幕截图会有所帮助