Node.js Express设置404状态码失败:兜底路由仍返回200问题求解
问题原因
你的代码存在两个核心错误,导致404状态码没有生效:
- API调用位置错误
你把状态码设置方法接在了app.get()的返回值后,而app.get()返回的是Express实例对象,不是HTTP响应对象res,所以这行代码的状态设置逻辑根本没有作用到要返回的响应上。 - API名称错误
Express中设置响应状态码的方法是status(),不存在code()这个方法,你调用的方法本身就是无效的。
修复方案
将第15行的代码修改为如下写法即可:
app.get("*", (req, res) => res.status(404).sendFile(errpage));
注意:你第10行的
res.sendfile(skull)也需要注意大小写,Express 4及以上版本正确的方法名是sendFile(首字母大写),小写写法属于旧版遗留API,可能触发警告甚至运行异常,建议同步修改。
补充说明
响应状态码是HTTP响应的属性,必须在返回响应内容之前,通过响应对象res的对应方法设置才能生效。你原来的写法相当于在路由注册完成后尝试调用Express实例上不存在的code()方法,运行时本身就会抛出异常,你可以检查下服务启动后的控制台日志确认相关报错信息。
内容的提问来源于stack exchange,提问作者user15845993
相关产品推荐
相关产品推荐

