我遇到了以下行为:
当我挂载了多个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');
});
这是"新"行为吗?因为根据我的理解(和4x文档),这是不应该发生的。
任何帮助都将非常感激。
express v4.13.0 on Mac OSX
所以我在了不起的@dougwilson的帮助下发现了这个问题。他建议我打印被请求的url,我看到/favicon.ico
正在打印。
仔细检查后,我看到第一个中间件实际上完成了请求,但是图标请求仍然挂起。这就是第二个中间件被调用的原因。这与res.json()
不能正常工作无关。
从来没有遇到过这个问题,它让我发疯了!谢谢大家的帮助!