title: TypeError: Cannot read property 'push' of undefined -Express
body: <p>I have written two Javascript files for nodejs application which uses express to route and for the creation of server.As i am beginner i don't know much about it.
  When i am running the application,it is showing me the following error :-</p>
  
  <pre><code>/usr/lib/node_modules/express/lib/router/index.js:472
      this.stack.push(layer);
                ^
  
  TypeError: Cannot read property 'push' of undefined
      at Function.use (/usr/lib/node_modules/express/lib/router/index.js:472:15)
      at Object.&lt;anonymous&gt; (/home/dhiresh/Coding/angularjsapp/api.js:9:3)
      at Module._compile (module.js:570:32)
      at Object.Module._extensions..js (module.js:579:10)
      at Module.load (module.js:487:32)
      at tryModuleLoad (module.js:446:12)
      at Function.Module._load (module.js:438:3)
      at Module.require (module.js:497:17)
      at require (internal/module.js:20:19)
      at Object.&lt;anonymous&gt; (/home/dhiresh/Coding/angularjsapp/index.js:2:7)
  </code></pre>
  
  <p>index.js file is as follows :-</p>
  
  <pre><code>var express = require('express'),
  api = require('./api'),
  app=express(); 
  
  app
  .use(express.static('./public'))
  .use('/api',api)
  .get('*',function (req,res) {
      res.sendfile('public/index.html');
  }).listen(3000);
  </code></pre>
  
  <p>api.js file is as follows :-</p>
  
  <pre><code>var express = require('express'),
   bourne = require('bourne'),
   bodyParser= require('body-parser'),
  
   db = new bourne('data.json'),
  
   router =express.Router(); 
  
   router
   .use(function(req,res,next){
      if(!req.user) req.user={ id:1 };
      next();
   })
   .use(bodyParser.json())
   .route('/contact')
   .get(function(req,res){
      db.find({userId : parseInt(req.user.id,10)},function(err,data){
          res.json(data);
      });
   })
   .post(function(req,res){
      var contact = req.body;
      contact.userId = req.user.id;
  
      db.insert(contact,function(err,data){
          res.json(data);
      });
   });
  
   router
   .param('id',function(req,res,next){
      req.dbQuery = { id:parseInt(req.params.id,10) }
   })
   .route('/contact/:id')
   .get(function(req,res){
      db.findOne(req.dbQuery,function(err,data){
          res.json(data);
      });
   })
   .put(function(req,res){
          var contact = req.body;
          delete contact.$promise;
          delete contact.$resolve;
          db.update(req.dbQuery,function(err,data){
          res.json(data[0]);
      })
      })
   .delete(function(req,res){
      db.delete(req.dbQuery,function(err,data){
          res.json(null);         
      })
   });
  
  module.exports = router;
  </code></pre>
  
  <p>Could anyone tell me the answere for this.</p>