【问题标题】:Add a failure page when a 404 error is found in ExpressExpress中发现404错误时添加失败页面
【发布时间】:2021-10-12 10:14:23
【问题描述】:

我使用一个运行良好的 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 上可以找到的任何东西,但都没有奏效。

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

有人可以帮忙吗?

【问题讨论】:

    标签: node.js express http-status-code-404 backend


    【解决方案1】:

    只需侦听路由器底部的“*”路径即可。 “*”表示其他任何内容,因此如果未找到该页面,它将提供回退而不是不断搜索。

    例子:

    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");
    })
    

    【讨论】:

      猜你喜欢
      • 2012-02-23
      • 2012-03-19
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多