2016-07-27 4 views
0

У меня проблема с маршрутизацией в экспресс 4. Я следовал примеру, но это не загрузка. Я просто получаю вращающееся колесо.routing node.js и express

Как вы выполняете маршрутизацию в экспресс-версии 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; 

ответ

1

Вы не вызывая функцию app.listen(). Вместо http.createServer, вы должны вызвать функцию Express.

Пожалуйста, взгляните на базовый example.

Соответствующий код:

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

Edit:, как slebetman написал в комментарии, тем более общий способ для этого является:

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

В качестве альтернативы он мог бы назвать 'http.createServer (приложение) .listen (порт) '. Этот более общий метод полезен, потому что вы можете использовать его с помощью 'https.createServer (conf, app) .listen (port)', если вам нужно поддерживать https – slebetman