Avoid circular dependencies
I had a situation where util.js
required state.js
, and state.js
required util.js
:
// util.js
const state = require("./state")
...
module.exports = { utilFunc }
// state.js
const util = require("./util")
...
module.exports = { set, get }
I was first confused to why this doesn't work, but realized that this causes infinite loop. util.js
tries to load state.js
, which tries to load util.js
, which tries to load state.js
etc. Here's a cool diagram I draw since you definitely didn't understand this, right?
Honestly I'm not sure how this should be fixed. Since my util function was a simple one-liner I just copied it straight to state.js
instead of refactoring everything. Well, at least I learned something new 🤑