单例不能跨多个文件 Nodejs

Singleton not work across mutiple file Nodejs

我尝试创建一个 Event Emitter 的单例实例,如下所示

在文件中mediator.js

const {EventEmitter} = require('events')

class MyEmitter extends EventEmitter {
    constructor() {
        super();
        this.test = Math.random()
    }
}

class Singleton {
    getInstance() {
        console.log(Singleton.instance)
        if (!Singleton.instance) {
            Singleton.instance = new MyEmitter()
        }
        return Singleton.instance
    }
}


module.exports = Singleton


在文件 test_mediator_1.js 中,我创建了一个实例

const MyEmitter = require('./mediator')
const mediator = new MyEmitter().getInstance()
console.log(mediator)

我得到了一个实例。

MyEmitter {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  test: 0.255542039674032,
  [Symbol(kCapture)]: false
}

但是,在 test_mediator_2.js 中:

const MyEmitter = require('./mediator')
const mediator = new MyEmitter().getInstance()
console.log(mediator)

我有一个不同的实例(测试 属性 在 2 个实例中是不同的)

MyEmitter {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  test: 0.9233626983577679,
  [Symbol(kCapture)]: false
}

如何跨多个文件获取单例实例???

提前致谢!!

我没有发现您创建单例的方式有任何问题。我试过了,它也工作正常。当我需要两个文件时,它给了我相同的实例。

此外,关于发射事件,您需要确保在注册侦听器后需要发生事件发射。如果您 运行 您的文件首先发出部分,则数据将被发出,并且由于没有侦听器,它将丢失。我想这就是你的情况。确保顺序正确。