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。 在最上面提及此类静态路径。