vitest-dev/vitest · error · Error

the blobs in " " were generated by a different version of…

Error message

the blobs in "${blobsDirectory}" were generated by a different version of Vitest. Expected v${currentVersion}, but received v${blobs[0].version}

What it means

The blobs are mutually consistent (a single version among them) but that version differs from the Vitest instance now running `mergeReports`. The reader only understands its own version's blob format, so it refuses to deserialize a foreign-version blob.

Solutions

  1. Run `mergeReports` with the exact Vitest version that produced the blobs.
  2. Or regenerate the blobs using the current Vitest version so producer and consumer match.
  3. Pin a single Vitest version across all environments that generate or merge blobs.

Example fix

# before: blobs written by vitest 2.x, merged by vitest 3.x
vitest --merge-reports=./blobs   # error: expected v3.x, got v2.x

# after (option A): merge with the matching version)
npx vitest@2 --merge-reports=./blobs

# after (option B): regenerate with current version)
rm -rf ./blobs && vitest --run --reporter=blob && vitest --merge-reports=./blobs
Defensive patterns

Strategy: validation

Validate before calling

import { readdir, readFile } from 'node:fs/promises'
import { parse } from 'flatted'

async function assertBlobsMatchRunnerVersion(dir: string, runnerVersion: string) {
  for (const name of await readdir(dir)) {
    const [v] = parse(await readFile(resolve(dir, name), 'utf-8')) as [string, ...unknown[]]
    if (v !== runnerVersion) {
      throw new Error(`Blob '${name}' is v${v} but runner is v${runnerVersion}. Merge with v${v} or regenerate blobs.`)
    }
  }
}

Prevention

When it happens

Trigger: `versions.size === 1` but `!versions.has(currentVersion)` — e.g. blobs written by Vitest 2.x being merged by Vitest 3.x, or vice versa.

Common situations: Generate step and merge step run in different containers/images with different Vitest pins; blobs produced in CI, merged locally on another version.

Related errors


AI-assisted analysis of vitest-dev/vitest@1fa9837ec2 (2026-08-11). Data as JSON: /api/errors/78ed63671e8c5c01. Report an issue: GitHub.

Appendix: source

Thrown at packages/vitest/src/node/reporters/blob.ts:156

    return { version, files, errors, coverage, file: filename, executionTime, environmentModules }
  })
  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]
      if (!project) {
        return
      }

      modulesByProject.external.forEach(([id, externalized]) => {
        project._resolver.externalizeCache.set(id, externalized)

View on GitHub (pinned to 1fa9837ec2)