title: Can't set headers after they are sent in nodejs
body: <p>how to send file in nodejs, i am creating one page app, so i just want abcd.html page to be  delivered on request for first time, 
  here is my code to that</p>
  
  <p>app.js</p>
  
  <pre><code>var express = require('express'),
      app = express(), 
      http = require('http'), 
      path = require('path'),
      fs = require('fs'), 
      mysql = require('mysql'), 
      server = http.createServer(app),
  
      passport = require('passport'),
      flash    = require('connect-flash'),
      useragent = require('express-useragent'),
      io = require('socket.io').listen(server);
  
  // configuration ===============================================================
      // connect to our database
  
      require('./config/passport')(passport); // pass passport for configuration
  
  app.use(express.static(path.join(__dirname, 'public')));
  app.use(app.router);
  
  
  
  app.configure(function() {
  
  
      app.set('views', path.join(__dirname, 'app/views'));
      app.set('view engine', 'ejs'); // set up ejs for templating
  
      // required for passport
      app.use(express.session({secret: 'vidyapathaisalwaysrunning',key: 'myuser.sid',cookie: { secure: false,maxAge:null}} )); // session secret1
      //app.use(express.session({secret: 'vidyapathaisalwaysrunning', key: 'myownsid', cookie: { secure: false, maxAge: 3600000 }} )); // session with expitation 
      //app.use(express.session({ key: 'express.sid', secret: 'vidyapathaisalwaysrunning' } )); // 2 cookieId ie connect.sid &amp; express.sid(user defined) session secret1
      //app.use(express.session({  store: sessionStore, secret: 'vidyapathaisalwaysrunning',cookie: {httpOnly: false},key: 'cookie.sid' } )); // session secret
      // set up our express application
      app.use(express.logger('dev')); // log every request to the console
      app.use(express.cookieParser()); // read cookies (needed for auth)
      app.use(express.bodyParser()); // get information from html forms
      app.use(useragent.express());
      app.use(express.json());
      app.use(express.urlencoded());
      app.use(express.methodOverride());  
      app.use(passport.initialize());
      app.use(passport.session()); // persistent login sessions
      app.use(flash()); // use connect-flash for flash messages stored in session
      app.use(express.static(path.join(__dirname, 'public')));
  });
  
  // development only
  if ('development' == app.get('env')) {
    app.use(express.errorHandler());
  }
  
  
  //routes ======================================================================
  require('./app/controller.js')(app, passport,io); // load our routes and pass in our app and fully configured passport
  //require('./app/socket')(app,io);
  // launch ======================================================================
  server.listen(8080);
  </code></pre>
  
  <p>response to the page</p>
  
  <pre><code>case '/':
                      /*response.writeHead(200, {'Content-Type': 'text/html'});
                      response.write('hello world');*/
                      //response.json({ message: 'hello' });
                      response.sendfile("../public/abcd.html");
  
                      break;
  </code></pre>
  
  <p>it always gives Can't set headers after they are sent, here is the console output</p>
  
  <blockquote>
    <p>Error: Forbidden
        at SendStream.error (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/node_modules/send/lib/send.js:145:16)
        at SendStream.pipe (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/node_modules/send/lib/send.js:307:39)
        at ServerResponse.res.sendfile (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/response.js:339:8)
        at /home/pitu/CODING/NODE-PROJECTS/chichat/app/controller.js:18:21
        at callbacks (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/router/index.js:161:37)
        at param (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/router/index.js:135:11)
        at pass (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/router/index.js:142:5)
        at Router._dispatch (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/router/index.js:170:5)
        at Object.router (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/lib/router/index.js:33:10)
        at next (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    _http_outgoing.js:331
        throw new Error('Can\'t set headers after they are sent.');
              ^ Error: Can't set headers after they are sent.
        at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:331:11)
        at ServerResponse.res.setHeader (/home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/node_modules/connect/lib/patch.js:59:22)
        at /home/pitu/CODING/NODE-PROJECTS/chichat/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js:63:17
        at fs.js:292:14
        at Object.oncomplete (fs.js:93:15)</p>
  </blockquote>
  
  <p>refrence screenshot
  <img src="https://i.stack.imgur.com/qHuz1.png" alt="screenshot">
  what to do</p>