next() 不是一个函数错误 Node.js。

11
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()不是一个函数。我一直在按照Node.js的教程进行,但他们的代码却可以正常运行。请问我遇到了什么问题?


foo(bar()) 总是先调用 bar 并将返回值传递给 foorequireAuthentication 不应该由您调用。 - Felix Kling
1个回答

20

这一行:

app.use(middleware.requireAuthentication());

调用你的方法,并将其返回值传递到app.use中。你没有使用任何参数来调用它,所以自然地next参数是undefined

去掉(),这样你就可以将函数本身而不是其结果传递给app.use

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接