2

I have an array of objects to define my routes and when I iterate over the object, my / route has no problem but any of the subsequent routes return a 404. They all point to the same index route for the sake of troubleshooting.

Here's the code:

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path');

var app = express();

var pagesArray = [
    {
      name: '/',
      route: routes.index
    },
    {
      name: 'about',
      route: routes.index
    },
    {
      name: 'contact',
      route: routes.index
    },
    {
      name: 'commentary',
      route: routes.index
    },
    {
      name: 'scratch',
      route: routes.index
    }

    ];

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

//app.get('/', routes.index);

pagesArray.forEach(function(pageObj){
  app.get(pageObj.name, pageObj.route);
  console.log("Name: "+pageObj.name+", Route: "+pageObj.route);
});

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});
2
  • You're missing forward slashes at the beginning of your routes. Commented May 18, 2014 at 19:21
  • 1
    For the love of... Can you make that an official answer so I can give you credit? Thanks! Commented May 18, 2014 at 19:23

1 Answer 1

2

A forward slash will be the starting character for any URL that is requested on your server. You need to modify your routes so there is a forward slash between each one:

var pagesArray = [
    {
      name: '/',
      route: routes.index
    },
    {
      name: '/about',
      route: routes.index
    },
    {
      name: '/contact',
      route: routes.index
    },
    {
      name: '/commentary',
      route: routes.index
    },
    {
      name: '/scratch',
      route: routes.index
    }

    ];
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.