Connect flash not displaying messages in PugHow to protect static folder in express with passportExpose vs Creating object in Router file of NodejsWhy is 'message' undefined regarding connect-flash?Passport Local Strategy not saving user in cookie or sessionHow to handle expired routes / sessions in express?flash message in passport jsHow to manually reload Passport express-session storeExpress messages '!=' throws error in PugManaging connect-flash and passport cookies separatelyHow to send github OAuth data to client?
Lay out the Carpet
What will be the benefits of Brexit?
Increase performance creating Mandelbrot set in python
There is only s̶i̶x̶t̶y one place he can be
when is out of tune ok?
How will losing mobility of one hand affect my career as a programmer?
Hostile work environment after whistle-blowing on coworker and our boss. What do I do?
How can I use the arrow sign in my bash prompt?
Efficiently merge handle parallel feature branches in SFDX
Applicability of Single Responsibility Principle
Was the picture area of a CRT a parallelogram (instead of a true rectangle)?
Modulo 2 binary long division in European notation
How do I keep an essay about "feeling flat" from feeling flat?
How to be diplomatic in refusing to write code that breaches the privacy of our users
quarter to five p.m
Finding all intervals that match predicate in vector
Is there an Impartial Brexit Deal comparison site?
What to do with wrong results in talks?
What are the ramifications of creating a homebrew world without an Astral Plane?
Can I convert a rim brake wheel to a disc brake wheel?
The Riley Riddle Mine
Best way to store options for panels
How could Frankenstein get the parts for his _second_ creature?
Is there a measurement for the vocal speed of a song?
Connect flash not displaying messages in Pug
How to protect static folder in express with passportExpose vs Creating object in Router file of NodejsWhy is 'message' undefined regarding connect-flash?Passport Local Strategy not saving user in cookie or sessionHow to handle expired routes / sessions in express?flash message in passport jsHow to manually reload Passport express-session storeExpress messages '!=' throws error in PugManaging connect-flash and passport cookies separatelyHow to send github OAuth data to client?
I have an application with several routes, and I want to send flash messages of different kinds given the user interaction: either a success or failure message, or in some cases no message. Right now the messages are not displaying and I can't figure out how to get it to work. I'm using Node, Express and Pug.
I have a server.js file, routes.js file, message.pug file, and layout.pug file. Here are my files:
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware
app.use(flash());
app.use((req, res, next) =>
res.locals.messages = require('express-messages')(req, res);
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
message.pug
.messages
each type in Object.keys(messages)
each message in messages[type]
div(class="alert alert-" + type) # message
// expected output
// div(class="alert alert-success") your flash messages are working
layout.pug
div.col-10.ml-sm-auto.px-4
!= messages('message', locals)
express pug connect-flash
add a comment |
I have an application with several routes, and I want to send flash messages of different kinds given the user interaction: either a success or failure message, or in some cases no message. Right now the messages are not displaying and I can't figure out how to get it to work. I'm using Node, Express and Pug.
I have a server.js file, routes.js file, message.pug file, and layout.pug file. Here are my files:
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware
app.use(flash());
app.use((req, res, next) =>
res.locals.messages = require('express-messages')(req, res);
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
message.pug
.messages
each type in Object.keys(messages)
each message in messages[type]
div(class="alert alert-" + type) # message
// expected output
// div(class="alert alert-success") your flash messages are working
layout.pug
div.col-10.ml-sm-auto.px-4
!= messages('message', locals)
express pug connect-flash
add a comment |
I have an application with several routes, and I want to send flash messages of different kinds given the user interaction: either a success or failure message, or in some cases no message. Right now the messages are not displaying and I can't figure out how to get it to work. I'm using Node, Express and Pug.
I have a server.js file, routes.js file, message.pug file, and layout.pug file. Here are my files:
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware
app.use(flash());
app.use((req, res, next) =>
res.locals.messages = require('express-messages')(req, res);
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
message.pug
.messages
each type in Object.keys(messages)
each message in messages[type]
div(class="alert alert-" + type) # message
// expected output
// div(class="alert alert-success") your flash messages are working
layout.pug
div.col-10.ml-sm-auto.px-4
!= messages('message', locals)
express pug connect-flash
I have an application with several routes, and I want to send flash messages of different kinds given the user interaction: either a success or failure message, or in some cases no message. Right now the messages are not displaying and I can't figure out how to get it to work. I'm using Node, Express and Pug.
I have a server.js file, routes.js file, message.pug file, and layout.pug file. Here are my files:
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware
app.use(flash());
app.use((req, res, next) =>
res.locals.messages = require('express-messages')(req, res);
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
message.pug
.messages
each type in Object.keys(messages)
each message in messages[type]
div(class="alert alert-" + type) # message
// expected output
// div(class="alert alert-success") your flash messages are working
layout.pug
div.col-10.ml-sm-auto.px-4
!= messages('message', locals)
express pug connect-flash
express pug connect-flash
asked Mar 21 at 15:03
ScottScott
6518
6518
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Since I had only two types of messages I was sending -- success or error -- I got rid of my messages.pug file and used the following code, which works.
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware THIS IS WHAT I CHANGED
app.use(flash());
app.use((req, res, next) =>
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js (the same as before)
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
Then in layout, I use the following:
div.col-10.ml-sm-auto.px-4
if successes
for success in successes
div.alert.alert-success # success
if errors
for error, i in errors
div.alert.alert-danger # error
This works for displaying a message in a redirect.
Note: If you want to display a message directly (via res.render()), you have to pass it to the render method directly like this:
app.get('/admin', (req, res) =>
req.flash("success", "flash message for a render method");
res.redirect("/admin", successes: req.flash("success") );
);
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283467%2fconnect-flash-not-displaying-messages-in-pug%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Since I had only two types of messages I was sending -- success or error -- I got rid of my messages.pug file and used the following code, which works.
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware THIS IS WHAT I CHANGED
app.use(flash());
app.use((req, res, next) =>
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js (the same as before)
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
Then in layout, I use the following:
div.col-10.ml-sm-auto.px-4
if successes
for success in successes
div.alert.alert-success # success
if errors
for error, i in errors
div.alert.alert-danger # error
This works for displaying a message in a redirect.
Note: If you want to display a message directly (via res.render()), you have to pass it to the render method directly like this:
app.get('/admin', (req, res) =>
req.flash("success", "flash message for a render method");
res.redirect("/admin", successes: req.flash("success") );
);
add a comment |
Since I had only two types of messages I was sending -- success or error -- I got rid of my messages.pug file and used the following code, which works.
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware THIS IS WHAT I CHANGED
app.use(flash());
app.use((req, res, next) =>
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js (the same as before)
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
Then in layout, I use the following:
div.col-10.ml-sm-auto.px-4
if successes
for success in successes
div.alert.alert-success # success
if errors
for error, i in errors
div.alert.alert-danger # error
This works for displaying a message in a redirect.
Note: If you want to display a message directly (via res.render()), you have to pass it to the render method directly like this:
app.get('/admin', (req, res) =>
req.flash("success", "flash message for a render method");
res.redirect("/admin", successes: req.flash("success") );
);
add a comment |
Since I had only two types of messages I was sending -- success or error -- I got rid of my messages.pug file and used the following code, which works.
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware THIS IS WHAT I CHANGED
app.use(flash());
app.use((req, res, next) =>
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js (the same as before)
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
Then in layout, I use the following:
div.col-10.ml-sm-auto.px-4
if successes
for success in successes
div.alert.alert-success # success
if errors
for error, i in errors
div.alert.alert-danger # error
This works for displaying a message in a redirect.
Note: If you want to display a message directly (via res.render()), you have to pass it to the render method directly like this:
app.get('/admin', (req, res) =>
req.flash("success", "flash message for a render method");
res.redirect("/admin", successes: req.flash("success") );
);
Since I had only two types of messages I was sending -- success or error -- I got rid of my messages.pug file and used the following code, which works.
server.js
// init project
const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const flash = require('connect-flash');
const passport = require("passport");
const session = require("express-session");
// http://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.set('view engine', 'pug');
// bodyparser middleware
app.use(bodyparser.urlencoded( extended: false ));
app.use(bodyparser.json());
// express-session middleware
app.use(session(
secret: process.env.SECRET,
resave: true,
saveUninitialized: true
));
// express-messages middleware THIS IS WHAT I CHANGED
app.use(flash());
app.use((req, res, next) =>
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
);
app.use(express.json());
// import passport-config file
require("./passport-config")(passport);
// passport middleware
app.use(passport.initialize());
app.use(passport.session());
const routes = require('./routes.js');
routes(app);
// listen for requests :)
const listener = app.listen(process.env.PORT, () =>
console.log('Your app is listening on port ' + listener.address().port);
);
routes.js (the same as before)
app.get('/', (req, res) =>
req.flash("success", "your flash messages are working");
res.redirect("/admin");
);
app.get("/admin", (req, res) =>
res.render(process.cwd() + '/views/pug/admin');
);
Then in layout, I use the following:
div.col-10.ml-sm-auto.px-4
if successes
for success in successes
div.alert.alert-success # success
if errors
for error, i in errors
div.alert.alert-danger # error
This works for displaying a message in a redirect.
Note: If you want to display a message directly (via res.render()), you have to pass it to the render method directly like this:
app.get('/admin', (req, res) =>
req.flash("success", "flash message for a render method");
res.redirect("/admin", successes: req.flash("success") );
);
answered Mar 22 at 19:47
ScottScott
6518
6518
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283467%2fconnect-flash-not-displaying-messages-in-pug%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown