title: Routing Error in expressjs
body: <p>I'm trying to learn expressjs, and have been trying to figure out a way to add MVC structure into it. For some reason, I get a 404 error when i try to access localhost:3000. </p>
  
  <p>My directory structure is:</p>
  
  <ul>
  <li>App
  <ul>
  <li>app.js</li>
  <li>routes.js</li>
  <li>controllers</li>
  <li>views</li>
  <li>etc.</li>
  </ul></li>
  </ul>
  
  <p>App.js:</p>
  
  <pre><code>mymodule = {
  
  /* initialize 
   * ==============================
   * load dependencies &amp; external node modules, setup engines */ 
  initialize: function() {
  
      // load modules
      this.express = require('express');
      this.path = require('path');
      this.favicon = require('static-favicon');
      this.logger = require('morgan');
      this.cookieParser = require('cookie-parser');
      this.bodyParser = require('body-parser');
  
      // initialize main express app.
      this.app = this.express();
  
      // attach view engine to app
      this.app.set('views', this.path.join(__dirname, 'views')); // view files are in /views/
      this.app.set('view engine', 'jade');
  
      // attach modules to app
      this.app.use(this.favicon());
      this.app.use(this.logger('dev'));
      this.app.use(this.bodyParser.json());
      this.app.use(this.bodyParser.urlencoded());
      this.app.use(this.cookieParser());
      this.app.use(this.express.static(this.path.join(__dirname, 'public'))); // static files are in /public/
  },
  
  /* setErrorHandlers
   * ===============================
   * set error handlers for routing */
  setErrorHandlers: function() {
      if (this.app == undefined) {    
          console.log("caught an attempt to set error handlers without initializing");
      } else {
  
          // Catch 404 Error and forward to error handler 
          this.app.use(function(req, res, next) {
              console.log("Caught 404 Error");
              var err = new Error('Not Found');
              err.status = 404;
              next(err);
          });
  
          // Error Handlers
  
          // 1) Dev Error Handler. print stack trace
          if (this.app.get('env') === 'development') {
              this.app.use(function(err, req, res, next) {
                  res.status(err.status || 500);
                  res.render('error', {
                      message: err.message,
                      error: err
                  });
              });
          }
  
          // 2) Production Error Handler
  
          this.app.use(function(err, req,res, next) {
              res.status(err.status || 500);
              res.render('error', {
                  message: err.message,
                  error: {}
              });
          });
      }
  },
  
  /* setRouters
   * ================================
   * */
  setRouters: function() {
      // get all routes 
      this.routes = require('./routes').construct(this.app);
  
  }
  }
  
  mymodule.initialize();
  mymodule.setErrorHandlers();
  mymodule.setRouters();
  
  module.exports = mymodule.app;'
  </code></pre>
  
  <p>routes.js:</p>
  
  <pre><code>var index_controller = require('./controllers/index').controller();
  
  module.exports.construct = function(app) {
      console.log("got here");
      //app.get('/', require('./controllers/index').about);
      //app.get('/', index_controller.index);
      app.get('/', function(req,res) {res.send("sdf");});
  }
  </code></pre>
  
  <p>./controllers/index.js:</p>
  
  <pre><code>module.exports.controller = function() {
  index_action = function(req, res) {
      if (req == undefined) {
          console.log("req undefined!");
      } else {
      console.log(req);
      res.render('index', {title: 'Express'});
      }
  }
  
  return {index: index_action};
  </code></pre>
  
  <p>}</p>
  
  <p>I put the code on github repo:
  <a href="https://github.com/sjang92/expressjs-mvc/blob/master/controllers/index.js" rel="nofollow">https://github.com/sjang92/expressjs-mvc/blob/master/controllers/index.js</a></p>
  
  <p>Does anyone know why it's happening?</p>
  
  <p>Thank you</p>