vitest-dev/vitest · error · Error
vitest.mergeReports() requires all blob files to be generate
Error message
vitest.mergeReports() requires all blob files to be generated by the same Vitest version, received
${blobs.map(b => `- "${b.file}" uses v${b.version}`).join('\n')} What it means
Thrown by `readBlobs` (blob.ts:151) when all blob files in the merge-reports directory are valid but they were not all produced by the same Vitest version. After reading, Vitest collects `version` from every blob into a `Set`; if the set has more than one distinct version, merging is refused because blob formats and serialized structures are not guaranteed to be cross-version compatible. The message lists each file and its version.
Source
Thrown at packages/vitest/src/node/reporters/blob.ts:151
) as MergeReport
if (!version) {
throw new TypeError(
`vitest.mergeReports() expects all paths in "${blobsDirectory}" to be files generated by the blob reporter, but "${filename}" is not a valid blob file`,
)
}
return { version, files, errors, coverage, file: filename, executionTime, environmentModules, transformTime }
})
const blobs = await Promise.all(promises)
if (!blobs.length) {
throw new Error(
`vitest.mergeReports() requires at least one blob file in "${blobsDirectory}" directory, but none were found`,
)
}
const versions = new Set(blobs.map(blob => blob.version))
if (versions.size > 1) {
throw new Error(
`vitest.mergeReports() requires all blob files to be generated by the same Vitest version, received\n\n${blobs.map(b => `- "${b.file}" uses v${b.version}`).join('\n')}`,
)
}
if (!versions.has(currentVersion)) {
throw new Error(
`the blobs in "${blobsDirectory}" were generated by a different version of Vitest. Expected v${currentVersion}, but received v${blobs[0].version}`,
)
}
// Restore module graph
const projects = Object.fromEntries(
projectsArray.map(p => [p.name, p]),
)
blobs.forEach((blob) => {
Object.entries(blob.environmentModules).forEach(([projectName, modulesByProject]) => {
const project = projects[projectName]View on GitHub (pinned to d568f8ce37)
Solutions
- Align all runners/shards to the exact same Vitest version (check `pnpm why vitest` / lockfile).
- Clear the merge-reports directory and regenerate all blob files in a single consistent run.
- Pin the Vitest version in CI and re-run the blob+merge pipeline.
Example fix
# before: shards produced blobs on different versions # after: pin and clean pnpm dlx vitest@latest --reporter=blob # same version everywhere rm -rf ./blob-reports && regenerate all shards
Defensive patterns
Strategy: validation
Validate before calling
import { readdirSync, readFileSync } from 'node:fs'
import { resolve } from 'node:path'
import { parse } from 'flatted'
const versions = new Set(
readdirSync(blobsDirectory).map(n => (parse(readFileSync(resolve(blobsDirectory, n), 'utf-8')) as any[])[0]),
)
if (versions.size > 1) throw new Error(`Mixed blob versions: ${[...versions].join(', ')}`) Prevention
- Pin a single Vitest version across all CI shards via the lockfile.
- Run `pnpm why vitest` / `npm ls vitest` to detect version drift in monorepos.
- Clear the blob directory before regenerating to avoid mixing old/new versions.
When it happens
Trigger: Collecting blob outputs from CI shards running different Vitest versions (e.g. one shard on 3.x, another on 2.x); reusing blob files from a previous run after a version bump; partial upgrade where some workspaces resolved a different Vitest.
Common situations: Monorepo with inconsistent `vitest` versions across packages; CI matrix that didn't pin the Vitest version; leftover blob files from a prior release combined with new ones.
Related errors
- the blobs in "${blobsDirectory}" were generated by a differe
- vitest.mergeReports() expects all paths in "${blobsDirectory
- vitest.mergeReports() expects all paths in "${blobsDirectory
- vitest.mergeReports() requires at least one blob file in "${
- Cannot merge reports with --watch enabled
AI-assisted analysis of vitest-dev/vitest@d568f8ce37 (2026-08-03).
Data as JSON: /data/errors/d17b741d8f6c2c85.json.
Report an issue: GitHub.