2015-09-27 71 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); 
}); 
相關問題