2014-09-30 101 views
0

我想在我的路由文件中使用在bin/www內創建的io實例。Node Express包含帶參數的路由

的WWW文件看起來像這樣

#!/usr/bin/env node 
var debug = require('debug')('chat'); 

var app = require('../app'); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

var routes = require('../routes/index')(app, io); 

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

io.sockets.on('connection', routes.chat); 

var server = http.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

和路由/索引文件看起來像這樣

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

router.get('/', function(req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

module.exports = router; 

我正在嘗試啓動應用程序

TypeError: Cannot call method 'indexOf' of undefined at Function.proto.handle (c:\node\myapp\node_modules\express\lib\router\index.js:127:28) 

回答

1
當這個錯誤

您的路由模塊暴露路由器。你可能想要的是這樣的。

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

module.exports = function(app, io) { 

    router.get('/', function(req, res) { 
    res.render('index', { title: 'Express' }); 
    }); 

} 
+0

您的建議不會導致任何錯誤,所以幾乎要工作,當試圖訪問它無法加載的主頁。在節點窗口中,它表示GET/- - ms - - – Alex 2014-10-01 08:27:09