{"record":{"id":"8c032ac66a1b9016","repo":"vitest-dev/vitest","slug":"failed-to-load-coverageprovidermap-provider-d","errorCode":null,"errorMessage":"Failed to load ${CoverageProviderMap[provider]}. Default export is missing.","messagePattern":"Failed to load (.+?)\\. Default export is missing\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/vitest/src/utils/coverage.ts","lineNumber":76,"sourceCode":"    return null\n  }\n\n  const provider = options.provider\n\n  if (provider === 'v8' || provider === 'istanbul') {\n    let builtInModule = CoverageProviderMap[provider]\n\n    if (loader.isBrowser) {\n      builtInModule += '/browser'\n    }\n\n    const { default: coverageModule }\n      = loader.isBrowser\n        ? await loader.import(builtInModule)\n        : await import(/* @vite-ignore */ builtInModule)\n\n    if (!coverageModule) {\n      throw new Error(\n        `Failed to load ${CoverageProviderMap[provider]}. Default export is missing.`,\n      )\n    }\n\n    return coverageModule\n  }\n\n  let customProviderModule\n\n  try {\n    customProviderModule = await loader.import(options.customProviderModule!)\n  }\n  catch (error) {\n    throw new Error(\n      `Failed to load custom CoverageProviderModule from ${options.customProviderModule}`,\n      { cause: error },\n    )\n  }","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/vitest/src/utils/coverage.ts#L58-L94","documentation":"For built-in coverage providers (v8/istanbul) Vitest dynamically imports @vitest/coverage-v8 or @vitest/coverage-istanbul and reads the default export. If the module loads but its default export is undefined/falsy, this error fires naming the package that was expected. This indicates the package is present but broken or has the wrong shape.","triggerScenarios":"test.coverage.provider is 'v8' or 'istanbul', the corresponding @vitest/coverage-* package is installed and importable, but its default export resolves to undefined. This is almost always a corrupt build, a version skew between vitest and the coverage package, or a broken main/exports field in that package.","commonSituations":"A partial install or a failed pnpm build in the monorepo, a coverage package version that does not match the vitest version, or a faulty package.json exports map pointing at a file without a default export.","solutions":["Reinstall the matching @vitest/coverage-v8 (or istanbul) at the same version as vitest.","In a monorepo, run pnpm build for the coverage package so the dist default export is generated.","Clear node_modules/.vite and the coverage cache, then reinstall.","Verify the package exports a default by running node -e \"import('@vitest/coverage-v8').then(m=>console.log(typeof m.default))\"."],"exampleFix":"// before: version skew\n// vitest@2.x with @vitest/coverage-v8@1.x\n\n// after: align versions\n// $ pnpm add -D vitest@latest @vitest/coverage-v8@latest","handlingStrategy":"type-guard","validationCode":"const m = await import('@vitest/coverage-v8')\nif (!m.default) throw new Error('coverage package has no default export; reinstall/rebuild')","typeGuard":"function hasDefaultCoverageExport(m) {\n  return m != null && m.default != null\n}","tryCatchPattern":null,"preventionTips":["Keep @vitest/coverage-* versions aligned with vitest.","Rebuild coverage packages in a monorepo before running coverage.","Clear caches after dependency changes."],"tags":["coverage","v8","istanbul","version-mismatch","build"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}