我有一个express应用程序,其中包含以下代码:
app.get('*', (req, res) => {
res.send('404', {
title: 404,
name: 'James Olaleye',
errorMessage: 'Page not found',
});
});
但是,My IDE会发出有关此消息的警告:
表示弃用的res.send(状态,正文):使用res.status(状态).send(正文)代替
使用上面的代码,My Browser将以下有效负载作为JSON对象返回:
{
"title": 404,
"name": "James Olaleye",
"errorMessage": "Page not found"
}
我想要的是向用户显示一个404未找到页面,如何实现这一点?
2条答案
按热度按时间gzszwxb41#
你有两个不同的问题
1:您正在使用旧方法响应请求,而不是使用此
res.status(STATUS_CODE).send(BODY)
2:你正在发送一个json,但是你想显示一个404页面,在这种情况下,你需要发送一个html模板
因此您代码应该如下所示
xu3bshqb2#
我更新了一下你的问题,使它更清楚,以供将来参考。
方法
res.send
被弃用,其中一个原因是它的用法过于模糊。服务器响应可以是很多东西,它可以是一个页面,它可以是一个文件,它可以是一个简单的JSON对象(您在这里看到的)。在您的示例中,当您运行
res.send(404,{ /*...*/ })
时,express应用程序假定您要发送一个JSON对象,因此它就这样做了。有多种可能的方法,以实现你想要的,但我会坚持最简单的解决方案。
如果你想以最简单的形式显示一个HTML页面,你实际上只需要修改你的代码就可以做到这一点:
这实际上将显示一个页面,而不是一个JSON对象。
如果愿意,您甚至可以定义整个HTML文件:
这将是最快的方式来实现你想要的。
更进一步,您可以在应用中的某个位置创建HTML文件,然后发送该HTML文件。
如果您的原始程式码如下所示:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
这将允许您有多个HTML文件,您可以发送。
就像我说的,也有其他的选择,但这会使这个答案太长,超出范围。如果你有兴趣,你可以研究Using template engines with Express,并从下面的链接开始。
快乐编码:)