Ant*_*ony 4 middleware node.js express
在节点中收到此错误,我认为这是由于与我的中间件之一有关,但是它指向的代码行是在res.render()调用中的用户控制器。
我找不到任何人在网上撰写有关此错误的文章,并且在看了一段时间的代码后也找不到原因。有任何想法吗?
如果您查看Express源代码,您将看到response.js(来自堆栈)的966行是这样的:
if (err) return req.next(err);
Run Code Online (Sandbox Code Playgroud)
您看到的错误消息表明req已定义但next不是函数。如果您进一步向上看,可以看到哪里req来的:
var req = this.req;
Run Code Online (Sandbox Code Playgroud)
this您调用的响应对象在哪里render。
尽管next通常只是将其作为参数传递给回调,但应该next在请求中附加一个函数。这不是您通常与自己互动的内容,而是内部工作的一部分。
因此,我看到了两种可能性。某些东西已经更改res.req为指向错误的对象,或者有些东西被吹走了req.next。我建议添加一些控制台日志记录以准确找出问题所在。例如,如果将其放在每个中间件调用之间:
app.use(function(req, res, next) {
console.log(typeof req.next);
next();
});
Run Code Online (Sandbox Code Playgroud)
它可以让您确定req.next从功能应切换为其他功能的点。
就我而言,我需要返回next ()
// Error
app.use((req, res, next) => {
if(!req.session.userId) {
next(); // <<<<< Error
}
})
// Solution
app.use((req, res, next) => {
if(!req.session.userId) {
return next();
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6799 次 |
| 最近记录: |