express - 如何在 ExpressJS 中为整个站点提供单个 404 页面?
问题描述
我正在缓慢但肯定地构建一个 Express Web 应用程序,并希望添加一个特定页面以在发生 404 响应时返回。这是我到目前为止所拥有的:
应用程序.js
app.get("*", function (req, res) {
res.send("What are you looking for???", 404);
});
这是在我的所有中间件、路由导入(我将它们模块化在其他文件中)之后,以及在侦听器触发以启动应用程序之前。就目前而言,只要根路由 (/) 上有 404,就会显示此文本,但当我在站点目录的更下方时不会显示此文本。例如,如果我在 /players/PageThatDoesNotExist 之类的子目录中,则不会显示错误页面并且应用程序超时。
我能做些什么来纠正这个问题并确保在应用程序上找不到页面时触发它?在此先感谢您的帮助。
解决方案
您的代码的问题是您使用它覆盖所有其他路由并以 404 状态响应任何传入请求。尝试像这样注册 404 路由处理程序,并确保它遵循所有其他路由。
app.use(function(req, res){
res.status(404).render('404.hbs');
});
然后呈现您的整个自定义 404 页面,或者
res.send('<h1>No page found</h1>');
带有一些字符串值的响应
推荐阅读
- azure - Azure APIM 开发人员门户报告选项卡不显示任何内容
- html - favicon 未在生产中呈现
- c++ - 为什么我的 COM 对象不断重置它的值?
- mod-security - 是否可以记录 ModSecurity 垃圾邮件阻止规则匹配的模式?
- syntax - 需要帮助绘制“比尔邀请了乔纳森喜欢的艺术家?”这句话的 D 结构。
- python-3.x - 在python中合并单个字典的两个键
- python - How to deal with transfer encoding in Python?
- c# - Obtain Assembly attributes from unloaded executable
- html - Why is my XPath based on text content failing?
- loops - 试图从 Rust 中的循环外部借用变量绑定