【问题标题】:Object #<Object> has no method 'findUser'对象 #<Object> 没有方法 'findUser'
【发布时间】:2015-06-04 06:37:47
【问题描述】:

我正在学习有关 MEAN 堆栈的 Lynda.com 课程,但此错误一直在发生。我不确定在哪里看。我已经浏览了许多谷歌页面,寻找任何可以给我线索的东西

这就是我调用 findUser 的地方。

  module.exports = function() {
  var passport = require('passport');
  var passportLocal = require('passport-local');
  var userService = require('../services/user-service');

  passport.use(new passportLocal.Strategy({usernameField: 'email'}, function(email, password, next) {
    userService.findUser(email, function(err, user) {
      if (err) {
        return next(err);
      }
      if (!user || user.password !== password) {
        return next(null, null);
      }
      next(null, user);
    });
  }));

  passport.serializeUser(function(user, next) {
    next(null, user.email);
  });

  passport.deserializeUser(function(email, next) {
    userService.findUser(email, function(err, user) {
      next(err, user);
    });
  });
};

这是我在尝试使用数据库中验证的用户信息“登录”时遇到的错误。

TypeError: Object #<Object> has no method 'findUser'
    at Strategy.module.exports [as _verify] (/home/ubuntu/workspace/auth/passport-config.js:7:17)
    at Strategy.authenticate (/home/ubuntu/workspace/node_modules/passport-local/lib/strategy.js:90:12)
    at attempt (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:341:16)
    at authenticate (/home/ubuntu/workspace/node_modules/passport/lib/middleware/authenticate.js:342:7)
    at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:82:5)
    at next (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:110:13)
    at Route.dispatch (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:91:3)
    at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:82:5)
    at proto.handle.c (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:267:22)
    at Function.proto.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:321:12)

这里是 user-services.js 文件

var User = require('../models/user').User;

exports.addUser = function(user, next) {
  var newUser = new User({
    firstName: user.firstName,
    lastName: user.lastName,
    roomNumber: user.roomNumber,
    email: user.email,
    password: user.password
  });

  newUser.save(function(err) {
    if (err) {
      return next(err);
    }
    next(null);
  });
};

【问题讨论】:

  • 能否提供文件来源../services/user-service
  • 穆塔希尔,你是对的。不知何故,我跳过了该部分设置的视频。现在一切都按预期工作。谢谢大家的帮助。

标签: node.js mongoose cloud9-ide


【解决方案1】:

您的 userService 导出对象没有 findUser 方法。

如果您的原始函数名称为findUser,则通过添加module.exports.findUser = findUser; 将其导出。如果您已经在导出一个对象,例如:

module.exports = {
  foo: foo
};

只需将findUser: findUser 添加到该对象即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多