2016-01-18 100 views
1

我想使用module.exports將路線分爲幾個不同的文件。快遞中的模塊化路線

這是一個非常簡單的文件:

// server/routes.js 
module.exports = function(app) { 
    app.get('/', function(req, res) { 
    res.render('index/index'); 
    }); 
} 

如何導入到這一點我的切入點文件?我有這個迄今爲止...

var routes = require('./server/routes'); 
// ... 
// try to import routes instead 
app = routes(app); 

導致我的服務器崩潰:

TypeError: Cannot read property 'listen' of undefined

更新:這是整個條目文件

var express = require('express'); 
var app = express(); 
var colors = require('colors'); 
var moment = require('moment'); 
var exphbs = require('express-handlebars'); 
var routes = require('./server/routes'); 

// set port 
app.set('port', process.env.PORT || 3000); 

// set templating engine 
app.engine('.hbs', exphbs({defaultLayout: 'ApplicationLayout', extname: ".hbs"})); 
app.set('view engine', ".hbs"); 

// try to import routes instead 
//app = routes(app); 

// launch server 
app.listen(app.get('port'), function() { 
    console.log(
    colors.rainbow('-------------------\n') 
    + "App running on port: " 
    + colors.red.underline(app.get('port')) 
    + " " 
    + colors.blue(moment().format('h:mm:ss a')) 
    + colors.rainbow('\n-------------------') 
); 
}); 
+0

表演的地方,你調用方法聽,請 – siavolt

回答

3

你正在做的事情這裏奇怪的是app = routes(app)因爲你的function(app)什麼都沒有返回。

嘗試簡單:

routes(app); 

app是一個對象引用(不是對象的副本),所以不管你用它做內部功能將立即生效。

P.S.

你可以做你所寫的方式,但在這種情況下function(app)應該返回app

module.exports = function(app) { 
    app.get('/', function(req, res) { 
    res.render('index/index'); 
    }); 
    return app; 
}