liabru/matter-js · warning

Plugin.dependencies: used by could not be resolved.

Error message

Plugin.dependencies: used by could not be resolved.

What it means

Plugin.dependencies warns when a dependency listed in a plugin's 'uses' array cannot be resolved, i.e. no registered or useable plugin matches the dependency name. The dependency is simply not satisfied and the dependent plugin is marked warned.

Source

Thrown at src/core/Plugin.js:214

        tracked[name] = Common.map(module.uses || [], function(dependency) {
            if (Plugin.isPlugin(dependency)) {
                Plugin.register(dependency);
            }

            var parsed = Plugin.dependencyParse(dependency),
                resolved = Plugin.resolve(dependency);

            if (resolved && !Plugin.versionSatisfies(resolved.version, parsed.range)) {
                Common.warn(
                    'Plugin.dependencies:', Plugin.toString(resolved), 'does not satisfy',
                    Plugin.toString(parsed), 'used by', Plugin.toString(parsedBase) + '.'
                );

                resolved._warned = true;
                module._warned = true;
            } else if (!resolved) {
                Common.warn(
                    'Plugin.dependencies:', Plugin.toString(dependency), 'used by',
                    Plugin.toString(parsedBase), 'could not be resolved.'
                );

                module._warned = true;
            }

            return parsed.name;
        });

        for (var i = 0; i < tracked[name].length; i += 1) {
            Plugin.dependencies(tracked[name][i], tracked);
        }

        return tracked;
    };

    /**

View on GitHub (pinned to acb99b6f87)

Solutions

  1. Pass the missing dependency plugin in the same Matter.use([dependentPlugin, dependencyPlugin]) call so it can be resolved.
  2. Register the dependency with Plugin.register(dependencyPlugin) before use.
  3. Fix the dependency name spelling in the plugin's 'uses' array.
  4. Remove the stale entry from 'uses' if the dependency is no longer needed.

Example fix

// before
Matter.use(myPhysicsPlugin); // uses: ['my-render']
// after
Matter.use([myPhysicsPlugin, myRenderPlugin]);
Defensive patterns

Strategy: validation

Validate before calling

plugin.uses.forEach(function (dep) {
  if (!Plugin.resolve(dep)) {
    throw new Error('Dependency ' + dep + ' is not registered; pass it in the same Matter.use call');
  }
});

Prevention

When it happens

Trigger: A plugin declares uses: ['some-plugin'] (optionally with @range) but 'some-plugin' was never registered via Plugin.register nor included in the same Matter.use call, and it is not resolvable from the dependency's own exports.

Common situations: Misspelled plugin names in the uses array; forgetting to pass the dependency plugin in the same Matter.use(plugins) call; loading plugins in the wrong order or via module systems where the dependency isn't a resolvable require; removing a plugin during refactoring while others still reference it.

Related errors


AI-assisted analysis of liabru/matter-js@acb99b6f87 (2026-09-02). Data as JSON: /api/errors/7f80697cd0e1c7ab. Report an issue: GitHub.