jaredhanson / electrolyte

Elegant dependency injection for Node.js.
MIT License
564 stars 59 forks source link

RangeError: Maximum call stack size exceeded #1

Open jmls opened 10 years ago

jmls commented 10 years ago

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 ?

jaredhanson commented 10 years ago

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?

Kroid commented 10 years ago

https://github.com/jriecken/dependency-graph

BrunoBernardino commented 9 years ago

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.

abloom commented 9 years ago

@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.

muttli commented 9 years ago

@jaredhanson any updates on this issue? It's kind of critical in my opinion that this gets fixed.

aegyed91 commented 9 years ago

+1

aimuzov commented 8 years ago

:+1:

ORusak commented 8 years ago

+1

anotheri commented 7 years ago

👍

kingjerod commented 7 years ago

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.

angelwithaneye commented 7 years ago

Still an issue in latest version 0.5