Использование modules.exports в основном файле Node - PullRequest
0 голосов
/ 28 ноября 2018

Я инициализировал свой сервер 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?

1 Ответ

0 голосов
/ 05 декабря 2018

Я понял это после прочтения этой замечательной статьи (ну, ее части: 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...
...