2016-12-22 34 views
3
var express = require('express'); 
var app = express(); 

var middleware = { 
    requireAuthentication: function(req, res, next){ 
     console.log("private route hit"); 
     next(); 
    } 
}; 

app.use(middleware.requireAuthentication()); 


app.get('/about', 

    function(req, res){ 
    res.send('You clicked on about!'); 

    } 

); 
var projectDir = __dirname + '/public'; 
app.use(express.static(projectDir)); 
app.listen(3000), function(){ 
    console.log('Static service started'); 

}; 

我得到错误(尝试运行服务器时)next()不是函数。我一直在关注Nodejs的教程,它对他们来说工作得很好。我在这里有什么问题?next()不是函数错误Node.js

+0

'FOO( bar())'总是先调用'bar'并将返回值传递给'foo'。 'requireAuthentication'不应该被你调用。 –

回答

4

这条线:

app.use(middleware.requireAuthentication()); 

电话你的方法,并将其返回值到app.use。你不使用任何参数调用它,所以自然next参数为undefined.

能获得你传递的功能,摆脱(),而不是它的结果,为app.use

app.use(middleware.requireAuthentication); 
// No() here --------------------------^