使用模块外部的函数导出

时间:2018-03-03 13:10:35

标签: javascript node.js

我正在努力解释我想要做的事情,如果有些事情不可理解,请告诉我。

我有一个名为www的文件,我正在设置我的套接字

var server = http.createServer(app);
var io = require('socket.io')(server);
require('../store.js')(io);

我正在将io数据发送到另一个文件以正确使用它。捕获我正在使用的io

module.exports = function (io){

}

我要做的是如何在io文件中使用module.exports之外的store.js?我试图创建一个变量,然后使用它,但这似乎不起作用。 我是如何尝试的。

var ioData;

ioData.on('connection', function(socket) {
  //Doesn't work
});

module.exports = function(io){
  ioData = io;
}

2 个答案:

答案 0 :(得分:1)

你可以这样做

<强> store.js

const store = {
  io: {},
  setIo(io) {
    store.io = io;
  },
  setHandlers() {
    store.io.on('connection', function(socket) {
      // do something with connected socket
    });
  }
};

module.exports = store;

<强> WWW

var server = http.createServer(app);
var store = require('../store');
var io = require('socket.io')(server);

store.setIo(io);
store.setHandlers(io);

答案 1 :(得分:0)

您需要创建一个将连接事件处理程序添加到模块导出函数中,因为当您更改ioData时,它不会重新添加处理程序。

var ioData;

module.exports = function(io){
  ioData = io;
  ioData.on('connection', function(socket) {
    //Doesn't work
  });
}