Я инициализировал свой сервер socket.io в моем файле server.js (основная точка входа).

РЕДАКТИРОВАТЬ 2: импорт otherfile.js в этот файл также

// server.js
const io = require('socket.io')(server);
const otherfile = require('otherfile.js');
io.use(//...configuration);
io.on("connection",otherfile);

module.exports = {io: io}

Теперь я хочу использовать этот же объект io в другом файле.

ИЗМЕНИТЬ 1: Чтобы уточнить, я вызываю экспортируемую переменную в блоке экспорта следующим образом:

// otherfile.js

const io = require('./server.js')['io'];

module.exports = {
    function(socket){
        // do stuff...
        io.emit("event", payload);
          }
}

При запуске выдает ошибку

Type Error: Cannot read '.on' property of undefined

Что-то такое.

Почему я не могу получить доступ к коду из основного файла js?

0
LeanKhan 28 Ноя 2018 в 22:11

1 ответ

Лучший ответ

Я понял это после прочтения эта отличная статья (ну, частично: p) о том, что модули в Node. В разделе «Циклическая зависимость модуля».

Проблема заключалась в том, что я экспортировал объект io после , который мне требовался 'otherfile.js', поэтому объект io еще не был экспортирован и поэтому не определен в 'otherfile .js 'при вызове кода.

Так что просто экспортируйте объект io, прежде чем запрашивать otherfile.js.

// server.js
module.exports = {
     io: io
     }
 const otherfile = require("otherfile.js");
 // listen for events...
0
LeanKhan 5 Дек 2018 в 15:14