hpyhacking/peatio · error
Cyclic dependency: {}
Error message
Cyclic dependency: {} What it means
Error "Cyclic dependency: {}" thrown in hpyhacking/peatio.
Source
Thrown at app/assets/javascripts/lib/angular-ui-router.js:297
* </pre>
* but the former is more efficient (in fact `resolve` just calls `study`
* internally).
*
* @param {object} invocables Invocable objects
* @return {function} a function to pass in locals, parent and self
*/
this.study = function (invocables) {
if (!isObject(invocables)) throw new Error("'invocables' must be an object");
// Perform a topological sort of invocables to build an ordered plan
var plan = [], cycle = [], visited = {};
function visit(value, key) {
if (visited[key] === VISIT_DONE) return;
cycle.push(key);
if (visited[key] === VISIT_IN_PROGRESS) {
cycle.splice(0, cycle.indexOf(key));
throw new Error("Cyclic dependency: " + cycle.join(" -> "));
}
visited[key] = VISIT_IN_PROGRESS;
if (isString(value)) {
plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES);
} else {
var params = $injector.annotate(value);
forEach(params, function (param) {
if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param);
});
plan.push(key, value, params);
}
cycle.pop();
visited[key] = VISIT_DONE;
}
forEach(invocables, visit);
invocables = cycle = visited = null; // plan is all that's requiredView on GitHub (pinned to dab8641137)
Solutions
- Remove the circular dependency between resolvables: break the cycle by injecting $injector into one of them and fetching the other dependency lazily at runtime.
When it happens
Trigger: Thrown at app/assets/javascripts/lib/angular-ui-router.js:297 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hpyhacking/peatio@dab8641137 (2026-08-23).
Data as JSON: /api/errors/d7d0b1f4862afb1f.
Report an issue: GitHub.