Node.js Node Route.get()需要回调函数,但得到了一个[object undefined]
我正在利用Passport创建一个Google OAuth2身份验证系统。我正在尝试用Coffeescript为其编写路由文件,但出于某些原因,我一直遇到以下错误:Node.js Node Route.get()需要回调函数,但得到了一个[object undefined],node.js,coffeescript,Node.js,Coffeescript,我正在利用Passport创建一个Google OAuth2身份验证系统。我正在尝试用Coffeescript为其编写路由文件,但出于某些原因,我一直遇到以下错误: D:\Programming\weebly-site\node_modules\express\lib\router\route.js:162 throw new Error(msg); ^ Error: Route.get() requires callback
D:\Programming\weebly-site\node_modules\express\lib\router\route.js:162
throw new Error(msg);
^
Error: Route.get() requires callback functions but got a [object Undefined]
at D:\Programming\weebly-site\node_modules\express\lib\router\route.js:162:15
at Array.forEach (native)
at Route.(anonymous function) [as get] (D:\Programming\weebly-site\node_module
s\express\lib\router\route.js:158:15)
at Function.proto.(anonymous function) [as get] (D:\Programming\weebly-site\no
de_modules\express\lib\router\index.js:490:19)
at Object.<anonymous> (D:\Programming\weebly-site\routes\admin.js:15:10)
at Object.<anonymous> (D:\Programming\weebly-site\routes\admin.js:37:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (D:\Programming\weebly-site\app.js:16:19)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (D:\Programming\weebly-site\bin\www:3:11)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
编译的JS文件:
// Generated by CoffeeScript 1.8.0
(function() {
var express, isLoggedIn, passport, router;
express = require('express');
passport = require('../config/passport.js');
router = express.Router();
router.get('/', function(req, res) {
return res.render('admin/admin_index.jade');
});
router.get('/editor', isLoggedIn, function(req, res) {
return res.render('admin/admin_editor.jade');
});
router.get('/auth/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
router.get('/auth/google/callback', passport.authenticate('google', {
successRedirect: '/editor',
failureRedirect: '/'
}));
isLoggedIn = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect('/');
};
module.exports = router;
}).call(this);
在使用它之前,您还没有设置isLoggedIn,因此在那一点上它仍然是未定义的 动议如下:
isLoggedIn = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect('/');
};
在这一行之前:
router.get('/editor', isLoggedIn, function(req, res) {
或者去掉isLoggedIn
变量并使用function isLoggedIn(){}
语法来提升函数:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect('/');
};
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
return res.redirect('/');
};