How to deal with cyclic dependencies in Node.js

circular-dependency, module, node.js, require

Solution

While node.js does allow circular `require` dependencies, as you've found it can be pretty messy and you're probably better off restructuring your code to not need it. Maybe create a third class that uses the other two to accomplish what you need.

Problem

I've been working with nodejs lately and still getting to grips with the `module` system, so apologies if this is an obvious question. I want code roughly like the below: a.js (the main file run with node) ``` var ClassB = require("./b"); var ClassA = function() { this.thing = new ClassB(); this.property = 5; } var a = new ClassA(); module.exports = a; ``` b.js ``` var a = require("./a"); var ClassB = function() { } ClassB.prototype.doSomethingLater() { util.log(a.property); } module.exports = ClassB; ``` My problem seems to be that I can't access the instance of ClassA from within an instance of ClassB. Is there any correct / better way to structure `modules` to achieve what I want? Is there a better way to share `variables` across `modules`?

Original source