在主节点文件中使用modules.exports

时间:2018-11-28 19:11:16

标签: javascript node.js socket.io export require

我在server.js文件(主入口点)中初始化了socket.io服务器。

编辑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 :(得分:0)

在阅读关于节点中需要模块的this great article(好吧,一部分:p)后,我发现了这一点。在“循环模块依赖性”下。

问题是,在我需要'otherfile.js'之后,我正在导出io对象,因此io对象尚未导出,因此未定义调用代码时,在“ otherfile.js”中。

因此,仅在需要'otherfile.js'之前导出io对象。

// server.js
module.exports = {
     io: io
     }
 const otherfile = require("otherfile.js");
 // listen for events...