【问题标题】: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!');
});