https://stackoverflow.com/questions/28399536/how-to-best-structure-an-express-v4-11-project-with-socket-io How to deal with cyclic dependencies in Node.js https://stackoverflow.com/questions/10869276/how-to-deal-with-cyclic-dependencies-in-node-js 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. Circular dependencies are code smell. If A and B are always used together they are effectively a single module, so merge them. Or find a way of breaking the dependency; maybe its a composite pattern. Not always. in database models, for example, if I have model A and B, in model A I may want to reference model B (e.g. to join operations), and vice-versa. Therefore, export several A and B properties (the ones that does not depend on other modules) before use the "require" func...