我有一个简单的快递应用程序,我希望将我的套接字侦听信息放在sockets
目录中的单独文件中(其中的每个文件都对应一个控制器 - 分离问题)。
在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
我错过了什么?
答案 0 :(得分: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);
});