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


当前回答

app.get('*',function(req,res){
 res.redirect('/login');
});

其他回答

app.get('*',function(req,res){
 res.redirect('/login');
});

上面的答案很好,但其中一半的答案不会返回404作为HTTP状态代码,而另一半答案则不能呈现自定义模板。在Expressjs中拥有自定义错误页面(404)的最佳方法是

app.use(function(req, res, next){
    res.status(404).render('404_error_template', {title: "Sorry, page not found"});
});

将此代码放在所有URL映射的末尾。

你问题的答案是:

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

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

我在定义所有路由后所做的是捕捉潜在的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;

在app.js的最后一行放入这个函数。这将覆盖默认的page-not-found错误页面:

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

它将覆盖没有有效处理程序的所有请求,并呈现您自己的错误页面。