{"record":{"id":"47afcbf403889fd2","repo":"liabru/matter-js","slug":"plugin-dependencies-does-not-satisfy-used-by","errorCode":null,"errorMessage":"Plugin.dependencies: does not satisfy used by .","messagePattern":"Plugin\\.dependencies: does not satisfy used by \\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/core/Plugin.js","lineNumber":206,"sourceCode":"\n        tracked = tracked || {};\n\n        if (name in tracked) {\n            return;\n        }\n\n        module = Plugin.resolve(module) || module;\n\n        tracked[name] = Common.map(module.uses || [], function(dependency) {\n            if (Plugin.isPlugin(dependency)) {\n                Plugin.register(dependency);\n            }\n\n            var parsed = Plugin.dependencyParse(dependency),\n                resolved = Plugin.resolve(dependency);\n\n            if (resolved && !Plugin.versionSatisfies(resolved.version, parsed.range)) {\n                Common.warn(\n                    'Plugin.dependencies:', Plugin.toString(resolved), 'does not satisfy',\n                    Plugin.toString(parsed), 'used by', Plugin.toString(parsedBase) + '.'\n                );\n\n                resolved._warned = true;\n                module._warned = true;\n            } else if (!resolved) {\n                Common.warn(\n                    'Plugin.dependencies:', Plugin.toString(dependency), 'used by',\n                    Plugin.toString(parsedBase), 'could not be resolved.'\n                );\n\n                module._warned = true;\n            }\n\n            return parsed.name;\n        });\n","sourceCodeStart":188,"sourceCodeEnd":224,"githubUrl":"https://github.com/liabru/matter-js/blob/acb99b6f8784c809b940f1d2cf745427e088e088/src/core/Plugin.js#L188-L224","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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."],"exampleFix":"// before\nuses: ['my-render@^0.14.0'] // installed my-render is 0.19.0\n// after\nuses: ['my-render@^0.19.0']","handlingStrategy":"validation","validationCode":"var deps = Plugin.dependencyParse(depString);\nvar resolved = Plugin.resolve(depString);\nif (resolved && !Plugin.versionSatisfies(resolved.version, deps.range)) {\n  console.error('Installed', resolved.name, resolved.version, 'does not satisfy', deps.range);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["plugin","semver","dependency-resolution"],"backgroundTag":"dependency-version-conflict","analyzedSha":"acb99b6f8784c809b940f1d2cf745427e088e088","analyzedAt":"2026-09-02T21:29:27.057Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}