我不知道这样做的函数,有人知道吗?


当前回答

Express-error-handler允许您为错误指定自定义模板、静态页面或错误处理程序。它还做了其他有用的错误处理,每个应用程序都应该实现,比如防止4xx错误DOS攻击,以及在不可恢复错误时优雅地关闭。以下是你如何做到你所要求的:

var errorHandler = require('express-error-handler'),
  handler = errorHandler({
    static: {
      '404': 'path/to/static/404.html'
    }
  });

// After all your routes...
// Pass a 404 into next(err)
app.use( errorHandler.httpError(404) );

// Handle all unhandled errors:
app.use( handler );

或者对于自定义处理程序:

handler = errorHandler({
  handlers: {
    '404': function err404() {
      // do some custom thing here...
    }
  }
}); 

或者对于自定义视图:

handler = errorHandler({
  views: {
    '404': '404.jade'
  }
});

其他回答

https://github.com/robrighter/node-boilerplate/blob/master/templates/app/server.js

这就是node-boilerplate所做的。

你问题的答案是:

app.use(function(req, res) {
    res.status(404).end('error');
});

有一篇很棒的文章讲述了为什么这是最好的方法。

你可以把一个中间件放在最后一个位置,它会抛出一个NotFound错误, 甚至直接渲染404页面:

app.use(function(req,res){
    res.status(404).render('404.jade');
});

我在定义所有路由后所做的是捕捉潜在的404并转发到错误处理程序,如下所示:

    const httpError = require('http-errors');

    ...

    // API router
    app.use('/api/', routes);
    
    // catch 404 and forward to error handler
    app.use((req, res, next) => {
      const err = new httpError(404)
      return next(err);
    });

    module.exports = app;

Express-error-handler允许您为错误指定自定义模板、静态页面或错误处理程序。它还做了其他有用的错误处理,每个应用程序都应该实现,比如防止4xx错误DOS攻击,以及在不可恢复错误时优雅地关闭。以下是你如何做到你所要求的:

var errorHandler = require('express-error-handler'),
  handler = errorHandler({
    static: {
      '404': 'path/to/static/404.html'
    }
  });

// After all your routes...
// Pass a 404 into next(err)
app.use( errorHandler.httpError(404) );

// Handle all unhandled errors:
app.use( handler );

或者对于自定义处理程序:

handler = errorHandler({
  handlers: {
    '404': function err404() {
      // do some custom thing here...
    }
  }
}); 

或者对于自定义视图:

handler = errorHandler({
  views: {
    '404': '404.jade'
  }
});