2016-05-17 129 views
0

我正在使用Express的Node应用程序。在这个应用程序中,我有以下内容:快速路由 - 根页面和404

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

此路线适用于正面情况。但是,对于否定的情况,它却失败了。例如,如果我访问“http://www.example.com/404”,我仍然可以看到索引页。实际上,我希望它能够通过,以便Express错误处理程序解决错误。

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

+0

的[我怎样才能得到Express.js到404只失踪路线?(HTTP可能重复: //sackoveroverflow.com/questions/11500204/how-can-i-get-express-js-to-404-only-on-missing-routes) –

回答

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”等。

+0

有趣。我不知道。感谢你的分享! – user687554

0

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

快速的错误处理中间件有四个参数,并应该将所有其他途径之后被定义:

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!'); 
});