我正在尝试使用 express 构建一个简单的网站。 一切正常,直到我决定添加下面的代码来捕获 404 错误
app.get('/*', function(req, res) {
res.render('404.ejs',{
title: 'PAGE NOT FOUND',
layout:'layout'})
});
之后,注意所有内部 CSS 文件和 JavaScript 资源文件,无法正确加载,我想是因为那些 CSS 和 JavaScript 文件引用链接不在路由配置中。这就是为什么所有到页面的路径都没有找到的原因/*
所以只是想知道,什么是正确的方法,我可以捕获 404 错误并显示我自己的自定义页面,并且不影响所有资源文件加载。谢谢!
最佳答案
如果您使用的是 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有关 Express 错误处理的更多信息。
关于javascript - Nodejs 和 express 无法定位资源文件(CSS & JS 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371933/