我遇到了以下行为:

当我安装了多个 express 中间件时,即使我在前一个中间件中使用 res.json() 明确地结束了请求,请求也会继续向下级联到下一个中​​间件。另请注意,我没有在上述中间件中的任何地方调用 next()

app.use('/v1/status', function (req, res, next) {
    res.json({ status: 'ok' });
});

app.use(function (req, res, next) {
    console.log('I always get called');
});

这是"new"行为吗?因为据我所知(和 4x 文档)这不应该发生。

任何帮助将非常感激。

在 Mac OSX 上表达 v4.13.0

最佳答案

所以我在了不起的@dougwilson 的帮助下发现了这个问题。他建议我打印请求的 url,然后我看到 /favicon.ico 正在打印。

仔细检查后,我看到第一个中间件实际上完成了请求,但图标请求仍然未决。这就是调用第二个中间件的原因。它与 res.json() 无法正常工作无关。

以前从未遇到过这个问题,这让我发疯了!谢谢大家的帮助!

关于javascript - 明确结束响应时调用 express.js 下一个中间件层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31516619/

10-09 14:16