@fanhypermax

Как сделать область видимости io?

/index.js

var express = require('express')
      , app = express()
      , path = require('path')
      , server = require('http').createServer(app)
      , io = require('socket.io')(server)
      , mod = require("./mod")

        mod.run();

server.listen(8080);
app.use(express.static(path.join(__dirname, 'public'));


/mod.js

mod =  {
      run:()=> {
   
      //Как тут использовать io?

      }
}

module.exports = mod;


Как сделать что бы В mod.run можно было использовать io ?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 2
@LiguidCool
В принципе вы можете перенести подгрузку io в файл mod.js, но при условии что в другом месте эти переменные не используются.
Если же это не возможно, то вам надо уже созданные переменные передавать другим компонентам при инициализации.
Например создать mod как класс и передать io в конструктор. Либо вызывать mod.run(io) и в функции run его получать.
Ответ написан
Комментировать
Negezor
@Negezor
Senior Shaurma Developer
mod.js
module.exports = class Mod {
	constructor({ io }) {
		this.io = io;
	}

	run() {
		this.io.something();
	}
}

index.js
var express = require('express')
      , app = express()
      , path = require('path')
      , server = require('http').createServer(app)
      , io = require('socket.io')(server)
      , Mod = require("./mod")

      
const mod = new Mod({ io });

mod.run();

server.listen(8080);
app.use(express.static(path.join(__dirname, 'public'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы