我试图在我的快速js应用程序中实现中间件功能,它遵循一个简单的MVC架构。routes.js
文件夹下的route
//load the controller auth.js
var auth = require('../controllers/auth');
//auth route
router.route('/auth').get(auth.simpleAuth);
auth.js
文件夹下的controllers
//load the middleware
var middleware = require('../middleware/middleware');
module.exports={
simpleAuth:function (req,res) {
//invoke middleware
middleware.testMiddleware;
res.send('middleware test completed');
}
}
middleware.js
文件夹下的middleware
module.exports={
testMiddleware:function (req,res,next) {
console.log('inside middleware');
if(req.username == true){
next();
}else{
console.log('auth failed')
}
}
}
没有显示错误消息,但是当我访问
auth
路由时,未调用中间件功能。 最佳答案
您没有正确调用它。尝试从路线调用它。
routes.js
var middleware = require('../middleware/middleware');
router.route('/auth').all(middleware.testMiddleware).get(auth.simpleAuth);
middleware.js
testMiddleware: function (req,res,next) {
console.log('inside middleware');
if(req.username == true) {
next();
} else {
// error
return res.status(401).json({ "message" : "auth failed"});
}
}
关于javascript - Express js:middleware函数未调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43198916/