问个关于中间件的问题
我使用了express 4 作为框架搭建了一个应用, 现在写了个认证相关的function(req, res, next),在单独的模块里面,并且exports了出来
在app.js里面 app.post(/.*$/, auth()); 直接这样调用是可以的
但是 app.use(auth()); 就不行了,请问这个是什么问题啊
或者可以给一个express 4 上自己写的中间件的例子吗?
10 回复
auth被定义成了一个函数,这个函数返回一个新的函数,新函数是 function(req, res, next). 所以直接app.use(auth)是不行的
不确定是不是因为express4 抛弃了connect引起的,网上很多例子都是connect的
module.exports =function FUNNAME(arg1, arg2) {
return function FUNNAME(req, res, next) {
}
};
然后
app.use(FUNNAME());
调用
我的代码是这么写的 auth.js :
module.exports = function() {
return function (req, res, next) {...};
}
app.js
...
auth = require("./middleware/auth"),
...
app.use(auth());
每次请求的时候,auth.js都没有运行。
我也试了不用匿名函数,结果是一样的