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

                    SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

                    용인 삼성생명 블루밍스 목차 통계 역대 감독 선수단 응원단 경기장 같이 보기 외부 링크 둘러보기 메뉴samsungblueminx.comeh선수 명단용인 삼성생명 블루밍스용인 삼성생명 블루밍스ehsamsungblueminx.comeheheheh

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