【发布时间】:2021-10-12 04:31:45
【问题描述】:
我正在尝试打印以在 ejs 文件中打印一条闪存消息。但它抛出了一个错误。
**ReferenceError: E:\nodeProject\views\login.ejs:10
8| <body>
9| <h1>Login</h1>
>> 10| <% if(messages.error){%>
11| <%=messages.error%>
12| <%}%>
messages is not defined.**
我已将 server.js 作为我的主要 js 文件。我已经安装了所需的模块,但出现的问题是因为它无法识别我的 ejs 文件中的“messages.error”。我的主 js (server.js) 文件中的一些语句是:
const initializePassport=require('./passport-config');
const passport=require('passport');
const flash=require('express-flash');
const session=require('express-session');
const router=express.Router();
app.use(session({
secret:process.env.SESSION_SECRET,
resave :false,//if we want to resave the session variables if nothing has changed
saveUninitialized:false//do u want to save an empty value if there is no value
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
router.route('/login').post(passport.authenticate('local',{
successRedirect:'/',
failureRedirect:'/login',
failureFlash:true,
}));
initializePassport(passport,email=>{
MongoClient.connect(url,(err,db)=>{
if(err) throw err;
const dBase=db.db();
dBase.collection('Users').find({email:email},(err,res)=>{
if(err) throw err;
console.log(res);
})
return res;
db.close();
});
});
这是我的 passport-config.js 文件。在这里,我已经声明了护照在发生时应显示为错误的消息。我的 passport-config.js 文件是:
const localStrategy=require('passport-local').Strategy
const bcrypt=require('bcrypt');
function initialize(passport,getUserByEmail){
const authenticateUser= async(email,password,done)=>{
const user=getUserByEmail(email);
if(user==null)
{
return done(null,false,{message:"No user with this email found"});
}
try {
if(await bcrypt.compare(password,user.password)){
return done(null,user);
}
else{
return done(null,false,{message:"Password does not match "});
}
} catch (error) {
return done(error);
}
}
passport.use(new localStrategy({userName:'email'},authenticateUser));
}
module.exports= initialize;
** 这是我使用messages.error并收到未定义消息的错误的ejs文件:**
<body>
<h1>Login</h1>
<% if(messages.error){%>
<%=messages.error%>
<%}%>
<form action="/register" method="post">
<div>
<label for="name">Name</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">Password</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">Login</button>
</form>
<a href="/register">Register</a>
</body>
请看一下并告诉我出了什么问题。我是初学者,所以请不要介意我的提问方式不恰当。谢谢。
【问题讨论】:
标签: node.js express ejs express-session passport-local