📅  最后修改于: 2023-12-03 15:38:43.777000             🧑  作者: Mango
在使用 Express.js 时,有时候我们在访问某些页面时会遇到 404 错误,这种情况会影响用户体验。为了给用户更好的体验,我们可以将 404 错误重定向到我们自定义的页面上。下面我来介绍一下如何在 Express.js 中实现这个功能。
在 Express.js 中,我们可以通过中间件函数来处理 HTTP 请求和响应。当一个请求进入 Express.js 时,它会从第一个中间件开始处理,直到出现一个匹配的路由或到达最后一个中间件。如果没有一个中间件能匹配当前请求的路由,那么就会返回 404 错误。我们可以通过自定义中间件来捕获这个错误并进行处理。
我们可以使用 app.use()
方法来添加自定义中间件,这个方法需要在其他路由之前调用。我们可以定义一个中间件函数来捕获 404 错误,例如:
app.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
这个中间件函数会返回 404 状态码和一个简单的错误信息。但是这个错误信息可能不够友好,因此我们可以将其重定向到我们自己定义的一个页面上。我们可以先创建一个 404.html
页面,如下:
<!DOCTYPE html>
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
<p>Sorry, the page you are looking for cannot be found.</p>
</body>
</html>
然后我们可以更新我们的中间件函数,将请求重定向到 404.html
页面上:
app.use(function(req, res, next) {
res.status(404);
res.sendFile(__dirname + '/public/404.html');
});
res.status(404)
用于设置响应的状态码为 404,然后 res.sendFile()
方法将 404.html
文件发送到客户端。__dirname
指的是当前脚本所在的目录。
通过自定义 Express.js 中间件,我们可以将 404 错误信息友好的展示给用户,提升用户体验。这一方法也适用于其他一些错误的处理。