Javascript 为什么抛出user.validPassword不是函数错误?
我正在构建node.js应用程序,我使用的是Passport js,我从它的官方网站上阅读了Passport local doumentation,我使用了它的local Passport策略,它抛出了user.validPassword不是一个函数错误 app.jsJavascript 为什么抛出user.validPassword不是函数错误?,javascript,node.js,express,passport.js,passport-local,Javascript,Node.js,Express,Passport.js,Passport Local,我正在构建node.js应用程序,我使用的是Passport js,我从它的官方网站上阅读了Passport local doumentation,我使用了它的local Passport策略,它抛出了user.validPassword不是一个函数错误 app.js require('./config/test')(passport); app.use(passport.initialize()); app.use(passport.session()); router.get('/test
require('./config/test')(passport);
app.use(passport.initialize());
app.use(passport.session());
router.get('/test', (req, res, next)=>{
res.render('test');
});
router.post('/test',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/test',
failureFlash: true })
);
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
const User = require('../model/students');
module.exports = function () {
passport.use(new LocalStrategy(
function (username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
}
index.js
require('./config/test')(passport);
app.use(passport.initialize());
app.use(passport.session());
router.get('/test', (req, res, next)=>{
res.render('test');
});
router.post('/test',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/test',
failureFlash: true })
);
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
const User = require('../model/students');
module.exports = function () {
passport.use(new LocalStrategy(
function (username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
}
config/test.js
require('./config/test')(passport);
app.use(passport.initialize());
app.use(passport.session());
router.get('/test', (req, res, next)=>{
res.render('test');
});
router.post('/test',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/test',
failureFlash: true })
);
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
const User = require('../model/students');
module.exports = function () {
passport.use(new LocalStrategy(
function (username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
}
节点版本:10.16.1
快速版本:4.16.1
发生此类错误的原因是.validPassword(密码)不是“用户”下的函数。简单的例子:
//I use this code on google.com main page.
var logo = document.querySelector("#hplogo");
logo.validPassword(""); // -> Error: .validPassword is not a function
// here I declare function under 'validPassword'
logo.validPassword = function(pass){
console.log("Validate password", pass);
};
logo.validPassword(""); // -> message: 'Validate password',''
所以我猜您丢失了函数本身。它会抛出该错误,因为user.validPassword不是一个函数-它在哪里定义的?我从它的官方网站复制了它,它不正确吗!!也许你错过了一个步骤-唯一未知的是
用户
-也许你创建了一个错误的步骤。。。我认为有一些字段叫做username
和password
这是否回答了您的问题?