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?













0















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)









share|improve this question


























    0















    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)









    share|improve this question
























      0












      0








      0








      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)









      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 21 at 15:03









      ScottScott

      6518




      6518






















          1 Answer
          1






          active

          oldest

          votes


















          0














          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") );
          );





          share|improve this answer






















            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
            );



            );













            draft saved

            draft discarded


















            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









            0














            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") );
            );





            share|improve this answer



























              0














              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") );
              );





              share|improve this answer

























                0












                0








                0







                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") );
                );





                share|improve this answer













                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") );
                );






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 22 at 19:47









                ScottScott

                6518




                6518





























                    draft saved

                    draft discarded
















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

                    155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

                    Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?