Route.js多个路由文件,无法使用路由器get / post函数中的附加function

我设法将Route.js分解为多个控制器,但是我错过了为什么我不能使用其他函数来阻止查看页面的权限的知识。

// route.js module.exports = function(app, passport) { app.use('/profile', require('./controllers/profileController')); } 

  // profileController.js var express = require('express') , router = express.Router() , permissions = require('../utils/permissions.js') // ===================================== // /profile // ===================================== router.get('/', function(req, res) { res.render('Profile/index.ejs', {}); } module.exports = router; 

为什么我不能在profileController中执行此操作?

  router.get('/', permissions.isLoggedIn, function(req, res) { res.render('Profile/index.ejs', {}); } 

它引发错误:

  Error: Route.get() requires callback functions but got a [object Undefined] at /home/ubuntu/workspace/node_modules/express/lib/router/route.js:171:15 at Array.forEach (native) at Route.(anonymous function) [as get] (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:167:15) at Function.proto.(anonymous function) [as get] (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:380:19) at Object.<anonymous> (/home/ubuntu/workspace/app/controllers/profileController.js:10:10) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) 

附加信息:

  // permissions.js var helpers = require('./helpers.js'); // route middleware to make sure a user is logged in function isLoggedInAJAX(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); res.json(helpers.shootMessage(helpers.getNOK(), "You're not logged in!")); } // route middleware to make sure a user is logged in function isLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); //save the page req.session.returnTo = req.path; // if they aren't redirect them to the home page //res.redirect('/info'); res.redirect('/auth/facebook'); } 

你的问题是你不在你的permissions.js中导出你的函数

 // permissions.js var helpers = require('./helpers.js'); // route middleware to make sure a user is logged in function isLoggedInAJAX(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); res.json(helpers.shootMessage(helpers.getNOK(), "You're not logged in!")); } // route middleware to make sure a user is logged in function isLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); //save the page req.session.returnTo = req.path; // if they aren't redirect them to the home page //res.redirect('/info'); res.redirect('/auth/facebook'); } module.exports = { isLoggedInAJAX : isLoggedInAJAX, isLoggedIn : isLoggedIn }