2015-09-27 33 views
0

我有一个简单的快速应用程序,我想让我的套接字在sockets目录中的单独文件中侦听信息(每个文件在那里都对应到控制器 - 关注点分离)。不能调用另一个文件中的函数(nodejs + express)

app.js,我试图得到这个工作:

io.on('connection', function(socket) { 
    socket.on('game-save-comment', require('./sockets/games.js')(data)); 
}); 

而且./sockets/games.js样子:

var GameSockets = function(data) { 
    console.log('got here'); 
} 

exports.GameSockets = GameSockets; 

不过,我得到这个错误:

socket.on('game-save-comment', require('./sockets/games.js')(data)); 
                  ^
ReferenceError: data is not defined 

我错过了什么?

回答

1

这里有两个问题。既然你出口GameSockets为命名的功能,所以在app.js你应该使用它作为:

io.on('connection', function(socket) { 
    socket.on('game-save-comment', require('./sockets/games.js').GameSockets(data)); 
}); 

但是你所得到的错误不是由这个引起的。您应该将一个函数传递给.on()事件处理函数,但是您尝试传递此函数的执行结果。所以最后你的app.js应该看起来像(请注意没有函数调用):

io.on('connection', function(socket) { 
    socket.on('game-save-comment', require('./sockets/games.js').GameSockets); 
}); 
相关问题