Saturday, 15 May 2010

javascript - Node cannot call method 'serializeUser' of undefined -



javascript - Node cannot call method 'serializeUser' of undefined -

i'm using passport create authentication scheme google. i'm next this tutorial. however, in passport.js file maintain getting error:

d:\programming\weebly-site\config\passport.js:11 passport.serializeuser(function(user, done){ ^ typeerror: cannot phone call method 'serializeuser' of undefined @ module.exports (d:\programming\weebly-site\config\passport.js:11:11) @ object.<anonymous> (d:\programming\weebly-site\routes\admin.js:9:46) @ object.<anonymous> (d:\programming\weebly-site\routes\admin.js:39:4) @ module._compile (module.js:456:26) @ object.module._extensions..js (module.js:474:10) @ module.load (module.js:356:32) @ function.module._load (module.js:312:12) @ module.require (module.js:364:17) @ require (module.js:380:17) @ object.<anonymous> (d:\programming\weebly-site\app.js:18:19) @ module._compile (module.js:456:26) @ object.module._extensions..js (module.js:474:10) @ module.load (module.js:356:32) @ function.module._load (module.js:312:12) @ module.require (module.js:364:17) @ require (module.js:380:17) @ object.<anonymous> (d:\programming\weebly-site\bin\www:3:11) @ module._compile (module.js:456:26) @ object.module._extensions..js (module.js:474:10) @ module.load (module.js:356:32) @ function.module._load (module.js:312:12) @ function.module.runmain (module.js:497:10) @ startup (node.js:119:16) @ node.js:906:3

here's passport.js file:

var googlestrategy = require('passport-google-oauth').oauth2strategy; var user = require('../models/users.js'); var configauth = require('./auth.js'); module.exports = function(passport) { passport.serializeuser(function(user, done){ done(null, user.id); }); passport.deserializeuser(function(id, done) { user.findbyid(id, function(err, user) { done(err, user); }); }); passport.use(new googlestrategy({ clientid : configauth.googleauth.clientid, clientsecret : configauth.googleauth.clientsecret, callbackurl : configauth.googleauth.callbackurl, }, function(token, refreshtoken, profile, done) { process.nexttick(function() { user.findone({ 'google.id' : profile.id}, function(err, user) { if(err) homecoming done(err); if(user) { homecoming done(null, user); } else { var newuser = new user(); newuser.google.id = profile.id; newuser.google.token = token; newuser.google.name = profile.displayname; newuser.google.email = profile.emails[0].value; newuser.save(function(err){ if(err) throw err; homecoming done(null, newuser); }); } }); }); })); };

app.js file:

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser'); var coffeescript = require('coffee-script'); var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); var session = require('express-session'); var configdb = require('./config/database.js'); mongoose.connect(configdb.url); require('./config/passport.js')(passport); var routes = require('./routes/index'); var adminroutes = require('./routes/admin') var users = require('./routes/users'); var app = express(); app.use('/', routes); app.use('/admin',adminroutes); app.use('/users', users); .... app.use(session({secret: 'lotsofwords', saveuninitialized: true, resave: true})); app.use(passport.initialize()); app.use(passport.session()); .... module.exports = app;

admin.js

// generated coffeescript 1.8.0 (function() { var express, isloggedin, pasport, passport, router; express = require('express'); passport = require('passport'); require('../config/passport.js')(passport); router = express.router(); isloggedin = function(req, res, next) { if (req.isauthenticated()) { homecoming next(); } res.redirect("/admin"); }; router.get('/', function(req, res) { homecoming res.render('admin/admin_index.jade'); }); router.get('/editor', function(req, res) { homecoming 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: '/' })); module.exports = router; }).call(this);

i have no thought how prepare - i've searched around on , google no avail. help appreciated, thanks!

you looking in wrong file. error in d:\programming\weebly-site\routes\admin.js:9:46. calling config/passport.js exported function without passing in passport module.

javascript node.js passport.js

No comments:

Post a Comment