title: Cannot read property '_header' of undefined in finalHandler node module
body: <p>I can't seem to find a solution to my problem. I am trying to startup my nodeJS/expressJS app but am receiving an error upon "npm start".</p>
  
  <p><strong>The Error &amp; Stacktrace:</strong></p>
  
  <pre><code>    /Users/jmccreary/Documents/NewHireSite/node_modules/finalhandler/index.js:94
      if (!err &amp;&amp; res._header) {
                     ^
  
  TypeError: Cannot read property '_header' of undefined
      at /Users/jmccreary/Documents/NewHireSite/node_modules/finalhandler/index.js:94:20
      at /Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:635:15
      at next (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:210:14)
      at Function.handle (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/router/index.js:174:3)
      at Function.handle (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/application.js:174:10)
      at app (/Users/jmccreary/Documents/NewHireSite/node_modules/express/lib/express.js:38:9)
      at Object.&lt;anonymous&gt; (/Users/jmccreary/Documents/NewHireSite/app.js:101:25)
      at Module._compile (module.js:571:32)
      at Object.Module._extensions..js (module.js:580:10)
      at Module.load (module.js:488:32)
      at tryModuleLoad (module.js:447:12)
      at Function.Module._load (module.js:439:3)
      at Module.require (module.js:498:17)
      at require (internal/module.js:20:19)
      at Object.&lt;anonymous&gt; (/Users/jmccreary/Documents/NewHireSite/bin/www:7:11)
      at Module._compile (module.js:571:32)
      at Object.Module._extensions..js (module.js:580:10)
      at Module.load (module.js:488:32)
      at tryModuleLoad (module.js:447:12)
      at Function.Module._load (module.js:439:3)
      at Module.runMain (module.js:605:10)
      at run (bootstrap_node.js:427:7)
  </code></pre>
  
  <p><strong>The Offending Code (in node_modules/finalhandler/index.js):<br>
  (Note: I added the console.logs myself, they are not part of the module)</strong></p>
  
  <pre><code>  function finalhandler (req, res, options) {
    var opts = options || {}
    console.log("The req is: ", req);
    console.log("The res is: ", res);
  
    // get environment
    var env = opts.env || process.env.NODE_ENV || 'development'
  
    // get error callback
    var onerror = opts.onerror
  
    return function (err) {
      var headers
      var msg
      var status
  
      // ignore 404 on in-flight response
      if (!err &amp;&amp; res._header) {
        debug('cannot 404 after headers sent')
        return
      }
      ...
  </code></pre>
  
  <p><strong>From my console.log()'s as shown, the output is below:</strong></p>
  
  <pre><code> The req is:  Authenticator {
    _key: 'passport',
    _strategies: { session: SessionStrategy { name: 'session' } },
    _serializers: [],
    _deserializers: [],
    _infoTransformers: [],
    _framework: 
     { initialize: [Function: initialize],
       authenticate: [Function: authenticate] },
    _userProperty: 'user',
    Authenticator: [Function: Authenticator],
    Passport: [Function: Authenticator],
    Strategy: { [Function: Strategy] Strategy: [Circular] },
    strategies: { SessionStrategy: { [Function: SessionStrategy] super_: [Object] } } }
   The res is:  undefined
  </code></pre>
  
  <p><strong>EDIT</strong>: This is, what I believe, is the code calling the error (from node_modules/express/lib/application.js):</p>
  
  <pre><code> /**
   * Dispatch a req, res pair into the application. Starts pipeline processing.
   *
   * If no callback is provided, then default error handlers will respond
   * in the event of an error bubbling through the stack.
   *
   * @private
   */
  
  app.handle = function handle(req, res, callback) {
    var router = this._router;
  
    // final handler
    var done = callback || finalhandler(req, res, {
      env: this.get('env'),
      onerror: logerror.bind(this)
    });
  
    // no routes
    if (!router) {
      debug('no routes defined on app');
      done();
      return;
    }
  
    router.handle(req, res, done);
  };
  </code></pre>
  
  <p>My package.json file (using Express 4) is as follows:</p>
  
  <pre><code>{
    "name": "newhiresite",
    "version": "0.1.0",
    "private": true,
    "scripts": {
      "start": "node ./bin/www"
    },
  "dependencies": {
      "body-parser": "~1.17.1",
      "connect-flash": "^0.1.1",
      "cookie-parser": "~1.4.3",
      "debug": "~2.6.3",
      "express": "~4.15.2",
      "express-session": "^1.15.3",
      "express-validator": "^3.2.0",
      "fs": "0.0.1-security",
      "mongodb": "^2.2.25",
      "mongoose": "^4.10.1",
      "morgan": "~1.8.1",
      "node-sass-middleware": "0.9.8",
      "passport": "~0.3.2",
      "passport-local": "~1.0.0",
      "pug": "~2.0.0-rc.1",
      "serve-favicon": "~2.4.2"
    }
  }
  </code></pre>
  
  <p>I am able to run the tutorial's source code just fine, and it has the same modules as my app, which is nearly identical (except for a www/bin file upon npm start command). I've tried removing other modules and moving things around in my app.js file to no avail.</p>
  
  <p>Any pointers or help would be much appreciated. Thank you!</p>