Pierwszy raz korzystam z flash messages. Wydaje mi się że poprawnie zadeklarowałem zmienne lokalne w app.js oraz że odpowiednio używam ich w routach, ale na stornie nie wyświetla się żadna wiadomość. Po operacji consol.log(error_msg); otrzymuję jedynie pustą tablicę [].
Konfiguracja w app.js
const flash = require('connect-flash');
app.use(flash());
app.use((req, res, next) => {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
next();
});
routes w user.js:
router.post('/register', (req, res) => {
const { password, password2 } = req.body;
if (password != password2) {
req.flash('error_msg', 'Passwords do not match.');
res.redirect('/');
return;
}
});
plik ejs:
<% if (error_msg != '') { %>
<div class="message error-msg" role="alert">
<%= error_msg %>
</div>
<% } %>
<%console.log(error_msg);%>
Nie rozumiem jeszcze jednej rzeczy. Czy we fragmencie kodu z user.js potrzebny jest return? Usuwając go pojawia się błąd: Cannot set headers after they are sent to the client. Czy po res.redirect('/') kod jest dalej wykonywany, a po res.render('index') nie?