Я думаю, что ваша проблема связана с выражением понимания.Вы получаете пустую страницу с вашим флэш-сообщением в <h3>
?Это потому, что вы делаете res.send
, когда у вас есть флэш-сообщение.Мы можем отправить только один ответ на один запрос (https://www.webnots.com/what-is-http/), или здесь вы пытаетесь отправить сначала h3
, а затем отправьте html-файл. Это плохой способ сделать такие вещи.
Сначаларешение
С вашим решением единственный способ сделать то, что вам нужно, - это динамически построить строку html:
var myHtml = `<html><head>...</head><body>`
if(loginmsg.length > 0) { myHtml += `<h3>${loginmsg}</h3>` }
myHtml += `rest of my page ...`
myHtml += `</body></html>`
res.send(myHtml)
Но, очевидно, это не очень хорошая практика.
Хорошая практика
Использование шаблонов! (http://expressjs.com/en/guide/using-template-engines.html). С шаблоном вы можете создать HTML-страницу с динамическими значениями в ней, как ваше флеш-сообщение! С шаблоном ejs (https://www.npmjs.com/package/ejs)у вас будет .ejs
шаблон файла, подобный этому:
<html>
<head>...</head>
<body>
<% if (loginmsg) { %>
<h3><%= loginmsg %></h3>
<% } %>
Rest of my page...
</body>
</html>
А в вашем экспресс-приложении:
app.get('/', function (req, res) {
var loginmsg = req.flash('error');
...
res.render('myTemplate', { loginmsg });
});
Веселитесь ✌️