user269964 user269964 - 4 months ago 18
Node.js Question

routing node.js and express

I'm having a problem routing in express 4. I was following the example, but it isn't loading. I'm just getting a spinning wheel.

How do you do routing in express version 4?

app.js:

var express = require('express');

var http = require('http');
var app = express();


app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');


var port = (process.env.PORT || process.env.VCAP_APP_PORT || 5000);

app.use('/birds', require('./controller/bird'));

http.createServer(function (req, res) {
//res.writeHead(200, {'Content-Type': 'text/plain'});
//res.end('Hello World!\n');
}).listen(port);



console.log('Server running at http://127.0.0.1:'+port);


bird.js:

var express = require('express');
var router = express.Router();

// middleware specific to this router
router.use(function timeLog(req, res, next) {
console.log('Time: ', Date.now());
next();
});
// define the home page route
router.get('/', function(req, res) {
res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
res.send('About birds');
});

module.exports = router;

Answer

You're not calling the app.listen() function. Instead of the http.createServer one, you should invoke the Express function.

Please, take a look at a basic example.

Relevant code:

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

Edit: as slebetman wrote in the comment, the more general way for it is:

http.createServer(app).listen(port, function(){ 
    console.log('now listening on port ' + port);
});
Comments