electrolyte
electrolyte copied to clipboard
RangeError: Maximum call stack size exceeded
I'm getting this error , with the following information :
node_modules/electrolyte/lib/component.js:9 Component.prototype.create = function(container) {
this may be happening because I have two components that need each other: so
Component A requires Component B, and Component B requires Component A
how would I get around this problem ?
I'm planning on adding a check for circular dependencies and throwing an error before the stack size is exceeded.
I don't know of a good workaround to the circular dependency problem. As a general rule, that's a sign that the two components need to be broken down (say add C that both A and B depend on, but C itself doesn't depend on either). If that's not possible, could you describe the relation of the components a bit more so I can understand it better and think on it?
https://github.com/jriecken/dependency-graph
I'm wondering in a situation where you've got a mongoose model, Blog, that has Posts. Post, has a Blog.
How can I avoid that (right now, it's just including each model via normal require — which works but misses the point of DI and better testing)?
I'd love to have electrolyte support that.
@BrunoBernardino I had the same issue with Bookshelf. I ended up defining each model in their own file using electrolyte, and then having a 3rd file to attach the associations, sort of the A/B and C pattern @jaredhanson mentioned above.
It's not ideal, but it works and the 3rd file ends up being the entry point for all my models.
@jaredhanson any updates on this issue? It's kind of critical in my opinion that this gets fixed.
+1
:+1:
+1
👍
I'm also running into this problem with SequelizeJS when doing a relationship with A.hasMany(B) and B.belongsTo(A).
Edit: I was able to get around this for Sequelize by defining my models in separate files (which I was doing anyways), and then injecting them into a third class which creates the relationships. Not as clean as I'd like, but it will do for now.
Still an issue in latest version 0.5