2015-02-06 94 views
0

我試圖打破我的節點服務器的路由,因爲它變得有點混亂。我跟着我的教程服務器看到的模式,並提出了文件路徑/ routes.js看起來像這樣:斷開Node/Express服務器的路由,但路由器未定義

var router = require('express').Router() 
// routes in here 
module.exports = router 

我加入這行到我的服務器

app.use(require('./routes/routes')) 

,但我的服務器韓元」牛逼啓動並給出

router.get('/', function (req, res, next)) Cannot call method 'get' of undefined 

我查了快遞文檔錯誤(3.16.3版本),但我不明白,爲什麼路由器是不確定的,不能稱之爲「得到」

回答

2

我通常有一個路由配置,我只是要求。

// config/routes.js 

module.exports = function (app) { 

    app.get('/', get.stuff); 
    app.post('/api/:id', create.stuff); 

} 

現在,在我們的服務器,我們只需要routes.js文件,併發送app

// server.js 

var app = express(), 
    server = http.createServer(app).listen(app.get('port'), function() {}); 

require('./config/routes.js')(app); 
+0

這工作。我有很多路線,其中一些用於html頁面,另一些用於我的應用程序的API。你會推薦像app1routes.js app2routes.js配置其他路由文件更模塊化? – user137717 2015-02-07 01:59:17

+0

以及任何你知道我第一次嘗試有什麼問題的機會?我在一個教程中做了它,它在那裏工作,而且我真的錯過了我失去了一些東西。 – user137717 2015-02-07 01:59:51

+0

第一次嘗試是從未定義路由器。我從來沒有使用過app.use(路由器)代碼,所以我不知道。我計劃做的有很多路由動態地創建它們,具有一個routeConfig.json文件,它看起來像這樣:[{method:'get',route:'/',middleware:[authenticate,parseStuff], controller:get.stuff}],然後遍歷每個路由並創建偵聽器。 – 2015-02-07 02:05:49