静态属性在nodejs中的多个文件之间不起作用

时间:2019-04-11 11:21:43

标签: node.js socket.io static

我正在使用nodejs和socket.io创建一个用于实时操作的新应用程序,当我尝试设置一个静态属性以在我拥有的所有类(即io实例)中使用它时,问题就来了。我现在正在做的是在服务器启动时分配io属性,并在尝试从其他类获取它时返回null。 就像对每个require('./ myclass')来说,它都会返回文件的新实例。

这是我的类,在其中我可以在构造函数中设置io实例

class IO {

    constructor(io) {
        IO.io = io;
        ioService.foo ='asdasd';
        // this.run();
    }




}

当服务器在index.js中启动时调用它:

const io = require('socket.io')(server, {serveClient: false});
const IO = require('./services/socket/io');
new IO(io);

从其他班级调用

class Admin {

    send(id, type, data) {
        // console.log('IO.io' , io); // it prints null 
        switch (type) {
            case 'ORDER_CREATED':
                io.emit('message', {
                    type: 'ORDER_CREATED',
                    data: data
                }); // error because io undefined
                break;

        }

    }


}

1 个答案:

答案 0 :(得分:0)

我在nodejs中使用“全局”解决了我的问题,但对执行方法仍然不满意,并等待一些答案。