Try to set properties on module.exports
, instead of replacing it completely. E.g., module.exports.instance = new ClassA()
in a.js
, module.exports.ClassB = ClassB
in b.js
. When you make circular module dependencies, the requiring module will get a reference to an incomplete module.exports
from the required module, which you can add other properties latter on, but when you set the entire module.exports
, you actually create a new object which the requiring module has no way to access.