NextJS自定义Express服务器中中间件未被调用问题求助
解决Express日志中间件未被调用的问题
嘿,我一眼就瞅出问题所在啦——你的日志中间件漏掉了关键的next()调用!
在Express的规则里,中间件要么直接给客户端返回响应,要么必须调用next()把请求传递给后续的中间件或路由处理函数。你当前的代码只打印了日志,但没让请求继续往下走,这会导致请求卡在这个中间件里,不仅后续路由没法处理请求,你甚至可能误以为中间件没被触发(实际上它已经被调用了,只是请求没继续流转而已)。
修复步骤
修改你的日志中间件,补上next()调用就行:
server.use(function(req, res, next) { console.log("LOGGED"); next(); // 必须添加这一行,让请求继续向下传递 });
额外优化建议
为了让日志更实用,你可以加上请求方法、路径和时间戳,方便后续调试:
server.use(function(req, res, next) { console.log(`${new Date().toISOString()} - ${req.method} ${req.path} - LOGGED`); next(); });
确认挂载顺序
另外要确保你的日志中间件挂载在所有路由之前(就像你现在代码里的位置一样,在helmet、bodyParser之后,各个server.get/server.post以及兜底的*路由之前),这样所有经过Express的请求都会先经过这个日志中间件。
这样修改之后,你再访问页面或者调用接口,就能看到控制台正常打印日志啦!
内容的提问来源于stack exchange,提问作者Tekeste Kidanu
相关产品推荐
相关产品推荐

