liabru/matter-js · warning

Plugin.dependencies: does not satisfy used by .

Error message

Plugin.dependencies: does not satisfy used by .

What it means

During plugin dependency validation, Plugin.dependencies checks that each dependency's installed version satisfies the required semver range. If the resolved plugin's version does not match the dependency range (e.g. plugin 'foo@^1.0.0' needed but installed 'foo@2.1.0'), this warning is logged and the dependency is flagged as warned.

Source

Thrown at src/core/Plugin.js:206

        tracked = tracked || {};

        if (name in tracked) {
            return;
        }

        module = Plugin.resolve(module) || module;

        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;
        });

View on GitHub (pinned to acb99b6f87)

Solutions

  1. Update the dependency string in the dependent plugin's 'uses' array (or its version range) to match the installed plugin version, e.g. 'plugin@^2.0.0'.
  2. Install/downgrade the dependency plugin to a version that satisfies the declared range.
  3. Widen the range to '*' if any version is acceptable.

Example fix

// before
uses: ['my-render@^0.14.0'] // installed my-render is 0.19.0
// after
uses: ['my-render@^0.19.0']
Defensive patterns

Strategy: validation

Validate before calling

var deps = Plugin.dependencyParse(depString);
var resolved = Plugin.resolve(depString);
if (resolved && !Plugin.versionSatisfies(resolved.version, deps.range)) {
  console.error('Installed', resolved.name, resolved.version, 'does not satisfy', deps.range);
}

Prevention

When it happens

Trigger: Calling Matter.use with a plugin whose 'uses' array declares a dependency string like 'renderer@^0.14.0' while the registered plugin of that name has a version outside the range (e.g. 0.19.0 or 0.13.x).

Common situations: Upgrading matter.js or a plugin to a newer version while another plugin still declares an old semver range; pinning versions with a caret/tilde that newer releases break; copying plugin config from a tutorial with mismatched versions.

Related errors


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