循環参照でrequireした結果が空オブジェクトになってしまう webpackなどでCommonJSモジュールを利用していると、モジュール間で循環参照が発生した場合、片方のモジュールでrequire結果が空オブジェクトになってしまう。 例えば下記のような構成で3つのファイルが同じディレクトリにあった場合を考える。 // parent.js var a = require('./a') var b = require('./b') b.printA() a.printB() // a.js var varB = require('./b') module.exports = { strA:"moduleA", printB: function(){ console.log(varB.strB) } } // b.js var varA = require('./a') module.expo