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
- 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'.
- Install/downgrade the dependency plugin to a version that satisfies the declared range.
- 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
- Keep dependency ranges in plugin 'uses' arrays in sync with the versions you actually ship.
- Prefer wide ranges ('*' or generous carets) for loosely coupled plugins.
- Re-run Matter.use in CI after any plugin version bump to surface range mismatches.
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
- Plugin.dependencies: used by could not be resolved.
- Plugin.dependencyParse: is not a valid dependency string.
- Plugin.versionParse: is not a valid version or range.
- Plugin.register: does not implement all required fields.
- Plugin.register: was upgraded to
AI-assisted analysis of liabru/matter-js@acb99b6f87 (2026-09-02).
Data as JSON: /api/errors/47afcbf403889fd2.
Report an issue: GitHub.