Express 中间件:res.statusCode 不准确 return 状态码
Express middleware: res.statusCode doesn't accurately return the status code
我在 Express JS 应用程序中有一个相当直接的日志记录中间件功能:
app.use(function (req, res, next) {
const line = `${req.method} ${req.originalUrl} ${res.statusCode}`
console.log(line)
next()
})
我有这条路线:
this.app.use('/404', function (req, res) {
res.sendStatus(404)
})
记录以下内容:
GET /404 200
对于其他路线,它似乎总是 return 200。
我该如何解决这个问题,以便它在不更改路由的情况下准确地记录状态代码?
编辑
我的目标是快速告诉我路线是否成功以及是否成功。我不想编辑我的所有路由以与它兼容,因为我最终会用实际的日志记录解决方案替换它。
这仍然不适用于所有路线,但适用于更多路线:
this.app.use(async function (req, res, next) {
await next()
const line = `${req.method} ${req.originalUrl} ${res.statusCode}`
console.log(line)
})
取决于:https://expressjs.com/guide/error-handling.html
app.use('/404', function (req, res) {
console.error(err.stack);
res.status(404).send('not found!');
});
您也可以使用 http-errors 模块:
var createError = require('http-errors');
app.use(function(req, res, next) {
next(createError(404));
});
不知道您的全部代码,但 this.app 没有必要。直接使用app.use。
调试,命中时,你的请求不在app.use('/404')之内,它可能是上面提到的服务路径,如app.use('/:variable'),所以可能是变量= = 404。
在最上面提及此类静态路径。
我在 Express JS 应用程序中有一个相当直接的日志记录中间件功能:
app.use(function (req, res, next) {
const line = `${req.method} ${req.originalUrl} ${res.statusCode}`
console.log(line)
next()
})
我有这条路线:
this.app.use('/404', function (req, res) {
res.sendStatus(404)
})
记录以下内容:
GET /404 200
对于其他路线,它似乎总是 return 200。
我该如何解决这个问题,以便它在不更改路由的情况下准确地记录状态代码?
编辑
我的目标是快速告诉我路线是否成功以及是否成功。我不想编辑我的所有路由以与它兼容,因为我最终会用实际的日志记录解决方案替换它。
这仍然不适用于所有路线,但适用于更多路线:
this.app.use(async function (req, res, next) {
await next()
const line = `${req.method} ${req.originalUrl} ${res.statusCode}`
console.log(line)
})
取决于:https://expressjs.com/guide/error-handling.html
app.use('/404', function (req, res) {
console.error(err.stack);
res.status(404).send('not found!');
});
您也可以使用 http-errors 模块:
var createError = require('http-errors');
app.use(function(req, res, next) {
next(createError(404));
});
不知道您的全部代码,但 this.app 没有必要。直接使用app.use。 调试,命中时,你的请求不在app.use('/404')之内,它可能是上面提到的服务路径,如app.use('/:variable'),所以可能是变量= = 404。 在最上面提及此类静态路径。