title: Error: "Can't set headers after they are sent."
body: <p>I'm new to nodejs and its routes system. I'm getting "Can't set headers after they are sent." only on production mode only on Heroku (It works fine locally). </p>
  
  <p>// Login =========================================</p>
  
  <pre><code>router.get('/', ifLoggedOut, function(req, res, next){
      res.render('login', { message: req.flash('message')});
  });
  
  router.post('/login', function(req, res, next){
      var username = req.body.username;
      var password = req.body.password;
  
      req.checkBody('username', 'Username field is required').notEmpty();
      req.checkBody('username', 'Password field is required').notEmpty();
  
      req.checkBody('password', 'Invalid Credintials').len(8, 20);
      req.checkBody('username', 'Invalid Credintials').len(4, 20);
  
      var errors = req.validationErrors();
  
      if(errors) {
      res.render('login.ejs', {errors: errors});
      } else {
          passport.authenticate('local-login', {
              successRedirect : '/list', // redirect to the secure list section
              failureRedirect : '/', // redirect back to the signup page if there is an error
              failureFlash : true // allow flash messages
          })(req, res, next);
      }
  });
  </code></pre>
  
  <p>// Functions ================================================</p>
  
  <pre><code>function ifLoggedIn(req, res, next) {
  
  // if user is authenticated in the session, carry on 
      if (req.isAuthenticated()) {
          return next();
      }
    console.log("cannot found in session");
    res.redirect('/');
  
  }
  
  function ifLoggedOut(req, res, next){
      if(req.isAuthenticated()){
          res.redirect('/list');
      }
      return next();
  }
  
  
  app.use('/', router);
  }
  </code></pre>
  
  <p>// Error Log of Heroku </p>
  
  <blockquote>
    <p>2015-08-20T07:37:07.490091+00:00 app[web.1]: Error: Can't set headers after they are sent.
    2015-08-20T07:37:07.490096+00:00 app[web.1]:     at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
    2015-08-20T07:37:07.490098+00:00 app[web.1]:     at ServerResponse.header (/app/node_modules/express/lib/response.js:718:10)
    2015-08-20T07:37:07.490099+00:00 app[web.1]:     at ServerResponse.send (/app/node_modules/express/lib/response.js:163:12)
    2015-08-20T07:37:07.490101+00:00 app[web.1]:     at done (/app/node_modules/express/lib/response.js:957:10)
    2015-08-20T07:37:07.490103+00:00 app[web.1]:     at View.exports.renderFile [as engine] (/app/node_modules/ejs/lib/ejs.js:355:10)
    2015-08-20T07:37:07.490105+00:00 app[web.1]:     at View.render (/app/node_modules/express/lib/view.js:126:8)
    2015-08-20T07:37:07.490106+00:00 app[web.1]:     at tryRender (/app/node_modules/express/lib/application.js:639:10)
    2015-08-20T07:37:07.490108+00:00 app[web.1]:     at EventEmitter.render (/app/node_modules/express/lib/application.js:591:3)
    2015-08-20T07:37:07.490109+00:00 app[web.1]:     at ServerResponse.render (/app/node_modules/express/lib/response.js:961:7)
    2015-08-20T07:37:07.490111+00:00 app[web.1]:     at /app/routes/routes.js:7:7
    2015-08-20T07:37:07.490112+00:00 app[web.1]:     at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
    2015-08-20T07:37:07.490114+00:00 app[web.1]:     at next (/app/node_modules/express/lib/router/route.js:131:13)
    2015-08-20T07:37:07.490115+00:00 app[web.1]:     at ifLoggedOut (/app/routes/routes.js:181:10)
    2015-08-20T07:37:07.490117+00:00 app[web.1]:     at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
    2015-08-20T07:37:07.490118+00:00 app[web.1]:     at next (/app/node_modules/express/lib/router/route.js:131:13)
    2015-08-20T07:37:07.490119+00:00 app[web.1]:     at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)</p>
  </blockquote>