【问题标题】:Express Routing - Root Page and 404快速路由 - 根页面和 404
【发布时间】:2016-09-13 12:41:23
【问题描述】:

我正在开发一个使用 Express 的 Node 应用程序。在这个应用程序中,我有以下内容:

app.use('/', function(req, res) {
  res.render('index', {});            
}); 

这条路线适用于肯定的情况。但是,它在否定情况下失败。例如,如果我访问“http://www.example.com/404”,我仍然会看到索引页面。实际上,我希望它失败,以便 Express Error 处理程序处理错误。

如何更改我的路线,以便当有人访问我的应用程序的根目录时,他们可以看到主页。但是,如果他们输入其他内容,他们会看到 404 页面吗?

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

你想使用app.get()(或可能app.all()),而不是app.use()

app.get('/', function(req, res) {
  res.render('index', {});
});

app.use('/', ...)匹配/404的原因解释here

路由将匹配紧随其路径的任何路径,并带有“/”。例如:app.use('/apple', ...) 将匹配“/apple”、“/apple/images”、“/apple/images/news”等。

【讨论】:

  • 有趣。我不知道。谢谢分享!
【解决方案2】:

您可以定义中间件来专门处理错误。

Express 错误处理中间件有四个参数,应该在所有其他路由之后定义:

app.use('/', function(req, res) {
  res.render('index', {});            
}); 

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2019-08-02
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多