📜  如何将 404 错误重定向到 Express.js 中的页面?(1)

📅  最后修改于: 2023-12-03 15:38:43.777000             🧑  作者: Mango

如何将 404 错误重定向到 Express.js 中的页面?

在使用 Express.js 时,有时候我们在访问某些页面时会遇到 404 错误,这种情况会影响用户体验。为了给用户更好的体验,我们可以将 404 错误重定向到我们自定义的页面上。下面我来介绍一下如何在 Express.js 中实现这个功能。

express 中间件

在 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 错误信息友好的展示给用户,提升用户体验。这一方法也适用于其他一些错误的处理。