{"record":{"id":"a6e23b77e99ab0eb","repo":"facebook/docusaurus","slug":"invalid-name-plugin-version-number-versioninf","errorCode":null,"errorMessage":"Invalid name=${plugin} version number=${versionInfo.version}.\\nAll official @docusaurus/* packages should have the exact same version as @docusaurus/core (number=${docusaurusVersion}).\\nMaybe you want to check, or regenerate your yarn.lock or package-lock.json file?","messagePattern":"Invalid name=(.+?) version number=(.+?)\\.\\\\nAll official @docusaurus/\\* packages should have the exact same version as @docusaurus/core \\(number=(.+?)\\)\\.\\\\nMaybe you want to check, or regenerate your yarn\\.lock or package-lock\\.json file\\?","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/docusaurus/src/server/siteMetadata.ts","lineNumber":94,"sourceCode":"  return {type: 'local'};\n}\n\n/**\n * We want all `@docusaurus/*` packages to have the exact same version!\n * @see https://github.com/facebook/docusaurus/issues/3371\n * @see https://github.com/facebook/docusaurus/pull/3386\n */\nfunction checkDocusaurusPackagesVersion(siteMetadata: SiteMetadata) {\n  const {docusaurusVersion} = siteMetadata;\n  Object.entries(siteMetadata.pluginVersions).forEach(\n    ([plugin, versionInfo]) => {\n      if (\n        versionInfo.type === 'package' &&\n        versionInfo.name?.startsWith('@docusaurus/') &&\n        versionInfo.version &&\n        versionInfo.version !== docusaurusVersion\n      ) {\n        throw new Error(`Invalid name=${plugin} version number=${versionInfo.version}.\nAll official @docusaurus/* packages should have the exact same version as @docusaurus/core (number=${docusaurusVersion}).\nMaybe you want to check, or regenerate your yarn.lock or package-lock.json file?`);\n      }\n    },\n  );\n}\n\nexport function createSiteMetadata({\n  siteVersion,\n  plugins,\n}: {\n  siteVersion: string | undefined;\n  plugins: LoadedPlugin[];\n}): SiteMetadata {\n  const siteMetadata: SiteMetadata = {\n    docusaurusVersion: DOCUSAURUS_VERSION,\n    siteVersion,\n    pluginVersions: Object.fromEntries(","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/facebook/docusaurus/blob/3f483e80e326cc646b54b83d564b3f0c4881b9a6/packages/docusaurus/src/server/siteMetadata.ts#L76-L112","documentation":"Thrown by `checkDocusaurusPackagesVersion` when any loaded official `@docusaurus/*` plugin has a version different from `@docusaurus/core`. Docusaurus requires all first-party packages to share one version to avoid runtime incompatibilities. The message tells you which plugin mismatched and suggests regenerating the lockfile.","triggerScenarios":"Mixing versions in node_modules — e.g. `@docusaurus/core@3.4` with `@docusaurus/plugin-content-docs@3.1`. The loop at siteMetadata.ts:88-103 checks each `pluginVersions` entry whose name starts with `@docusaurus/` and throws on mismatch.","commonSituations":"Partial upgrades (upgrading core but not plugins); stale lockfile after a version bump; npm/pnpm hoisting differences across a monorepo; conflicting peer resolutions from third-party presets.","solutions":["Align all `@docusaurus/*` deps to a single version in package.json.","Regenerate the lockfile: `rm -rf node_modules package-lock.json && npm install` (or `pnpm install`).","Use `npm ls @docusaurus/core` / `pnpm why @docusaurus/plugin-content-docs` to find the divergent copy.","Re-run `create-docusaurus` upgrade or the versioned upgrade guide for your target release."],"exampleFix":"// before (package.json)\n\"@docusaurus/core\": \"3.4.0\",\n\"@docusaurus/plugin-content-docs\": \"3.1.0\",\n// after\n\"@docusaurus/core\": \"3.4.0\",\n\"@docusaurus/plugin-content-docs\": \"3.4.0\",","handlingStrategy":"validation","validationCode":"const docusaurusPkgs = Object.keys(require('./package.json').dependencies)\n  .filter(k => k.startsWith('@docusaurus/'));\nconst versions = new Set(docusaurusPkgs.map(name => require(`${name}/package.json`).version));\nif (versions.size !== 1) throw new Error('Mixed @docusaurus/* versions detected');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a single version range for all `@docusaurus/*` deps (e.g. all `^3.4.0`).","Regenerate the lockfile after every Docusaurus upgrade.","Run `npm ls @docusaurus/core` in CI to detect version drift."],"tags":["versioning","dependencies","lockfile","startup"],"backgroundTag":null,"analyzedSha":"3f483e80e326cc646b54b83d564b3f0c4881b9a6","analyzedAt":"2026-08-12T13:25:04.382Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}