在節點中得到這個錯誤,我認爲這是由於我的一件中間件有點關係,但它指向的代碼行是我的用戶控制器在res .render()調用。TypeError:req.next不是一個函數
我找不到任何人在網上寫這個錯誤,並且在查看一段代碼後找不到原因。有任何想法嗎?
在節點中得到這個錯誤,我認爲這是由於我的一件中間件有點關係,但它指向的代碼行是我的用戶控制器在res .render()調用。TypeError:req.next不是一個函數
我找不到任何人在網上寫這個錯誤,並且在查看一段代碼後找不到原因。有任何想法嗎?
如果你看看在快速的源代碼,你會看到該行的response.js
966(從堆棧)是這樣的:
if (err) return req.next(err);
你看到的錯誤消息暗示req
已定義,但next
不是函數。如果你看遠一點了,你能看到req
是來自:
var req = this.req;
其中this
是你叫render
響應對象。
雖然next
通常只是作爲參數傳遞給一個回調傳遞,還應該是一個稱爲next
附加到請求的功能。這不是你通常與自己互動的東西,它是內部工作的一部分。
所以我看到兩種可能性。或者有東西改變了res.req
指向錯誤的對象,或者東西已經吹走req.next
。我建議添加一些控制檯日誌記錄來確切地分離出錯的地方。例如,如果你把這個每個中間件之間的通話:
app.use(function(req, res, next) {
console.log(typeof req.next);
next();
});
這將讓您識別的地步,被它應該是被別的功能req.next
開關。
'next'是獨立函數,它不是'req'對象的一部分。你在代碼中調用'req.next'嗎? – alexmac
不,我不.. – Antoine
那麼你能提供堆棧跟蹤嗎? – alexmac