javascript - 使用模块导出之外的函数

标签 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){

}

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

var ioData;

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

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

最佳答案

你可以做到

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);

关于javascript - 使用模块导出之外的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49084493/

相关文章:

javascript - JsTree 上下文菜单错误

node.js - 使用 SQLite3 进行单元测试

javascript - 我如何在 Nodejs Buffer 上像 struct union type 一样处理 C?

javascript - NodeJS Needle 处理与 url 和 statusCode 匹配的异步请求数组

javascript - 更改下拉图像并在单击时替换按钮

javascript - 在 JavaScript 中处理 Mac 和 Windows 上的斜线

javascript - 如何更改索引表达式的类型?即: c[k]

javascript - Fastify:何时使用插件而不是常规模块?

node.js - 如何发送批量 MongoDB count() 查询?

node.js - RxJS:在 NodeJS 中处理 groupBy 和 Observable.fromEvents