添加 Express 发现 404 错误时的失败页面

Add a failure page when a 404 error is found in Express

我使用 API 创建了一个字典,它工作得很好,直到输入随机字符串导致应用程序崩溃并出现 404 错误。我想添加一个失败页面,而不是该页面有一个按钮,单击该按钮会将我重定向到主页。

const express = require("express");
const bodyParser = require("body-parser");
const https = require("https");
const request = require("request");
// const routes = require("routes");

const app = express();
app.use(bodyParser.urlencoded({extended: true}));
// app.use(routes);

app.get("/", function(req, res) {
  res.sendFile(__dirname + "/search.html");
})

app.post("/", function(req, res) {
  const word = req.body.word;
  const code = req.body.code;
  console.log(code);
  const url = "https://api.dictionaryapi.dev/api/v2/entries/" + code + "/" + word;

  https.get(url, function(response) {

    response.on("data", function(data) {
      if(response.statusCode >= 404){
        res.sendFile(__dirname + "/failure.html");
      }
      console.log(response.statusCode);
      const meaning = JSON.parse(data);
      const definition = meaning[0].meanings[0].definitions[0].definition

      res.send("<h1>" + definition + "</h1>");
      //  console.log(definition);

    })
  })
})

app.post("/failure", function(req, res) {
  res.redirect("/");
})

// app.use(function(req, res, next){
//   res.send("Hiiiiiiiiii");
// })

app.listen(process.env.PORT || 3000, function() {
  console.log("Server running properly");
})

我是 Express 的新手,到目前为止我已经尝试了我在 Internet 上能找到的任何东西,但 none 成功了。

我尝试添加的失败页面如下所示:

有人可以帮忙吗?

只需监听路由器底部的“*”路径即可。 “*”表示其他任何含义,因此如果找不到该页面,它将提供后备而不是不断搜索。

示例:

app.all('*', function(req, res) {
    // Do something
});

完整示例:

const express = require("express");
const bodyParser = require("body-parser");
const https = require("https");
const request = require("request");

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", function(req, res) {
  res.sendFile(__dirname + "/search.html");
})

app.post("/", function(req, res) {
  const word = req.body.word;
  const code = req.body.code;
  console.log(code);
  const url = "https://api.dictionaryapi.dev/api/v2/entries/" + code + "/" + word;

  https.get(url, function(response) {

    response.on("data", function(data) {
      if(response.statusCode >= 404){
        res.sendFile(__dirname + "/failure.html");
      }
      console.log(response.statusCode);
      const meaning = JSON.parse(data);
      const definition = meaning[0].meanings[0].definitions[0].definition

      res.send("<h1>" + definition + "</h1>");
      //  console.log(definition);

    })
  })
})

app.post("/failure", function(req, res) {
  res.redirect("/");
});

app.all('*', function(req, res) {
    // Do something
});

app.listen(process.env.PORT || 3000, function() {
  console.log("Server running properly");
})