2014-09-30 68 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