添加 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");
})
我使用 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");
})