У меня есть настройка req.flash (), и всякий раз, когда я выхожу из системы, я хочу, чтобы он отображал сообщение, но вместо этого я получаю сообщение об ошибке, которое приходит со страницы приветствия (страницы, на которую я перенаправляю, ошибка: сообщения не являютсяфункция).Чего я не понимаю, так это того, что views / message.ejs IS доступны по моему запросу, и я даже смог открыть console.log (message).
Message.ejs
<div id="messages">
<% Object.keys(messages).forEach(function (type) { %>
<% messages[type].forEach(function (message) { %>
<%= message %>
<% }) %>
<% }) %>
</div>
Маршрут выхода из системы
app.get('/logout', function(req, res){
req.logout();
req.flash('success', 'You have been logged out.');
res.redirect('/login');
});
Промежуточное программное обеспечение для экспресс-сообщений
app.use(require('connect-flash')());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
Страница приветствия
<% include ../partials/header-top.ejs %>
<title>Anon. - Welcome</title>
<% include ../partials/header-bottom.ejs %>
<div class="WATCH-OUT-card" id="content-warning">
<center>
<div class="card">
<div class="card-header">
Important
</div>
<div class="card-body">
<h5 class="card-title">Watch Out!</h5>
<p class="card-text">This site contains sensitive content.</p>
<a href="/" class="btn btn-primary">Go to site.</a>
</div>
</div>
</center>
</div>
<div id="welcomeContainer">
<div class="signupbox">
<div id="registerMessage">
<%- messages('message', locals) %>
</div>
<h1 id = "SignupHeader">Sign Up Here</h1>
<form action="/register" method="POST">
<p class="signupText">Username</p>
<input type="text" name="username" placeholder="Enter Username">
<p class="signupText">Password</p>
<input type="password" name="password" placeholder="Enter Password">
<p class="signupText">Confirm Pasword</p>
<input type="password" name="password2" placeholder="Enter Password">
<input type="submit" name="" value="Sign Up">
</form>
</div>
<p>Or</p>
<div class="loginbox">
<div id="registerMessage">
<%- messages('message', locals) %>
</div>
<h1 id = "LoginHeader">Login Here</h1>
<form action="/login" method="POST">
<p class="LoginText">Username</p>
<input type="text" name="username" placeholder="Enter Username">
<p class="LoginText">Password</p>
<input type="password" name="password" placeholder="Enter Password">
<input type="submit" name="" value="Login">
</form>
</div>
</div>
<% include ../partials/footer.ejs %>
Ошибка:
TypeError: C:\Users\ericl\Documents\ANON\views\welcome.ejs:41
39| <div class="loginbox">
40| <div id="registerMessage">
>> 41| <%- messages('message', locals) %>
42| </div>
43| <h1 id = "LoginHeader">Login Here</h1>
44| <form action="/login" method="POST">
messages is not a function
at eval (eval at compile (C:\Users\ericl\Documents\ANON\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:53:17)
at returnedFn (C:\Users\ericl\Documents\ANON\node_modules\ejs\lib\ejs.js:653:17)
at tryHandleCache (C:\Users\ericl\Documents\ANON\node_modules\ejs\lib\ejs.js:251:36)
at View.exports.renderFile [as engine] (C:\Users\ericl\Documents\ANON\node_modules\ejs\lib\ejs.js:482:10)
at View.render (C:\Users\ericl\Documents\ANON\node_modules\express\lib\view.js:135:8)
at tryRender (C:\Users\ericl\Documents\ANON\node_modules\express\lib\application.js:640:10)
at Function.render (C:\Users\ericl\Documents\ANON\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (C:\Users\ericl\Documents\ANON\node_modules\express\lib\response.js:1008:7)
at C:\Users\ericl\Documents\ANON\routes\login.js:10:6
at Layer.handle [as handle_request] (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\ericl\Documents\ANON\node_modules\express\lib\router\index.js:275:10)