我对Express的文档感到非常困惑。我想要实现一个非常简单的功能:为每个未匹配的路由返回自定义404页面。起初,这似乎非常直接:
app.get('/oembed', oembed()); // a valid route
app.get('/health', health()); // another one
app.get('*', notFound()); // catch everything else and return a 404
然而,当打开有效的URL(例如
/oembed
)时,express
仍然通过路由工作,并最终调用 notFound()
以及我仍然会看到/oembed
响应,但控制台会显示错误,指出 在已发送正文的情况下,notFound()
正在尝试设置标头 (404
)。 我尝试实现一个捕获此类错误的中间件。function notFound() {
return (err, req, res, next) => {
console.log(err);
res.sendStatus(404);
next(err);
};
}
我已经使用了 app.use(notFound());
添加了它,但是它甚至都没有被调用。我很难在互联网上找到任何关于这个问题的信息(例如不过时或错误的信息),而官方文档似乎也没有针对这个非常标准的用例提供任何具体的解释。我有点卡住了,不知道原因。
/oembed
路由长什么样? - Vasil Dininski