fancy fancy - 2 months ago 15
Javascript Question

How do you share an EventEmitter in node.js?

I want to emit events from one file/module/script and listen to them in another file/module/script. How can I share the emitter variable between them without polluting the global namespace?

Thanks!

Answer

You can pass arguments to require calls thusly:

var myModule = require('myModule')(Events)

And then in "myModule"

module.exports = function(Events) {
    // Set up Event listeners here
}

With that said, if you want to share an event emitter, create an emitter object and then pass to your "file/module/script" in a require call.

Update:

Though correct, this is a code smell as you are now tightly coupling the modules together. Instead, consider using a centralized event bus that can be required into each module.

Comments