我尝试使用express来构建一个简单的网站。 一切正常,直到我决定添加下面的代码来捕捉404错误
app.get('/*', function(req, res) {
res.render('404.ejs',{
title: 'PAGE NOT FOUND',
layout:'layout'})
});
之后,请注意所有内部CSS文件和JavaScript recourse文件,无法正确加载,我弄清楚因为那些CSS和JavaScript文件ref链接它不在路由配置中。这就是为什么所有路由到页面都找不到哪个/ *
所以只想知道,什么是正确的方法,我可以捕获404错误并显示我自己的自定义页面,而且对所有资源文件加载也没有影响。谢谢!
答案 0 :(得分:3)
如果您使用express,则应使用错误处理中间件,例如:
// Routing and public files
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// Error-handling middleware
app.use(function(err, req, res, next) {
// Parse error
// Ex. if error = 500, render 500.jade page
// At the end
next(err);
});
// This is called on any page not in router.
app.use(function(req, res, next) {
res.status(404);
// respond with html page
if (req.accepts('html')) {
res.render('error/404', { title: '404 Error.' });
return;
}
// respond with json
if (req.accepts('json')) {
res.send({ error: 'Not found' });
return;
}
// default to plain-text. send()
res.type('txt').send('Not found');
});
有关快速错误处理的详细信息,请参阅this。