Node.js / Express routing -


i'm new express. way i'm doing routing kicking error.

here relevant code:

app.js

var express = require('express')   , routes = require('./routes')   , http = require('http')   , path = require('path')   , firebase = require('firebase');  ...  // routing app.get('/', routes.index); app.get('/play', routes.play); 

index.js , play.js

exports.index = function(req, res){   res.sendfile('views/index.html'); };  exports.play = function(req, res){   res.sendfile('views/play.html'); }; 

this error:

error: .get() requires callback functions got [object undefined]

it references line in app.js

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

i'm lost why doesnt work because code structure identical routing index page , index page loads perfectly.

any ideas? thanks

the issue routes.play undefined when function expected.

console.log(typeof routes.play); // ... 

if routes split multiple files @ least comment, "index.js , play.js," suggests:

// routes/index.js exports.index = function(req, res){   res.sendfile('views/index.html'); }; 
// routes/play.js exports.play = function(req, res){   res.sendfile('views/play.html'); }; 

requiring directory include index.js. so, you'll still need require('./play') somewhere.

  1. you can either "forward" within index.js:

    exports.index = function(req, res){   res.sendfile('views/index.html'); };  var playroutes = require('./play'); exports.play = playroutes.play; 

    alternatively:

    exports.play = require('./play'); 
    app.get('/play', routes.play.play); 
  2. or require directly in app.js well:

     var express = require('express')   , routesindex = require('./routes')   , routesplay = require('./routes/play') // ...  // routing app.get('/', routesindex.index); app.get('/play', routesplay.play); 

Comments

Popular posts from this blog

java - JavaFX 2 slider labelFormatter not being used -

Detect support for Shoutcast ICY MP3 without navigator.userAgent in Firefox? -

web - SVG not rendering properly in Firefox -