无法调用另一个文件中的函数(nodejs + express)
Can't call a function in another file (nodejs + express)
我有一个简单的 express 应用程序,我希望在 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
我错过了什么?
这里有两个问题。由于您将 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);
});
我有一个简单的 express 应用程序,我希望在 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
我错过了什么?
这里有两个问题。由于您将 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);
});