TypeError:req.next不是一个函数
在节点中得到这个错误,我认为这是由于我的一件中间件,但它指向的代码行是我的用户控制器res.render()调用。
我找不到任何人在网上写这个错误,并且在查看代码一段时间后找不到原因。 有任何想法吗?
如果你看看Express源代码,你会看到response.js
(来自堆栈)的第966行是这样的:
if (err) return req.next(err);
您所看到的错误消息表明req
已定义,但next
不是函数。 如果你看得更req
,你可以看到req
来自哪里:
var req = this.req;
this
是您调用render
的响应对象。
虽然next
通常只是作为parameter passing给callback函数,但也应该有一个名为next
的函数附加到请求中。 这不是你通常与自己互动的东西,而是内在运作的一部分。
所以我看到两种可能性。 要么有什么改变res.req
指向错误的对象,或东西吹走了req.next
。 我build议添加一些控制台日志logging,以确定哪里出错。 例如,如果你把它放在每个中间件调用之间:
app.use(function(req, res, next) { console.log(typeof req.next); next(); });
它将允许您确定req.next
从应该变成其他function的位置。