Search code examples
javascriptnode.jseventemitter

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!


Solution

  • 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.