我正在研究Node.js以及使用护照和猫鼬进行电子邮件验证。 现在,我正在测试代码,但出现错误,但无法修复。 这是我的问题和下面发布的代码:
我有我的app.js
var nev = require('email-verification')(mongoose);
require('./routes/db/email-verification')(nev);
require('./routes/db/passport')(passport,nev);
我的email-verificaiton.js
var User = require('./ModelUser');
module.exports = function(nev){
nev.configure({
...
...
},function(err,options){
if(err)
return err;
console.log('test');
});
nev.generateTempUserModel(User,function(err,tempUserModel){
if(err){
return err;
}
console.log('checked');
});
};
我的passport.js
module.exports = function (passport, nev) {
...
...
passport.use('local-signup', new LocalStrategy({
usernameField: 'email', //dummy string
passwordField: 'password', //dummy string
passReqToCallback: true
}, function (req, email, password, done) {
var newUser = new User();
newUser.email = email;
newUser.password = password;
nev.createTempUser(newUser, function( err, existingPersistentUser, newTempUser){
if(err) console.error(err);
if(existingPersistentUser){
console.log('E-mail already exists');
return done(null, false, req.flash('signupMessage', 'E-mail already exists'));
}
if(newTempUser){
var URL = newTempUser[nev.options.URLFieldName];
nev.sendVerificationEmail(email, URL, function(err, info){
if(err) console.error(err);
console.log('An email has been sent to you. Please check it to verify your account.');
return done(null);
})
} else{
console.log('You have already signed up. Please check your email to verify your account.');
return done(null);
}
})
我收到错误TypeError:无法读取未定义的属性'createTempUser' 我不知道为什么我的password.js中的“ nev”变量未定义。 请问有人可以帮助我吗?这很难。
答案 0 :(得分:0)
在email-verificaiton.js
中,将其更改为类似于以下内容:
function verification(nev) {
nev.configure({
...
...
},function(err,options){
if(err)
return err;
console.log('test');
});
nev.generateTempUserModel(User,function(err,tempUserModel){
if(err){
return err;
}
console.log('checked');
});
};
module.exports = {verification}
然后在app.js
中可以更改
var nev = require('email-verification')(mongoose);
成为
var nev = require('email-verification').verification(mongoose);