vuejs/vue-cli · error · Error

Cannot resolve "@vue/vue${vueVersion}-jest" module. Please m

Error message

Cannot resolve "@vue/vue${vueVersion}-jest" module. Please make sure you have installed "@vue/vue${vueVersion}-jest" as a dev dependency.

What it means

The default jest preset detects the installed Vue major version (2 or 3) and resolves the matching transformer `@vue/vue2-jest` / `@vue/vue3-jest` to compile .vue files for Jest. It wraps require.resolve in try/catch and, on failure, throws a clear message naming the exact package and Vue version it expected as a devDependency.

Source

Thrown at packages/@vue/cli-plugin-unit-jest/presets/default/jest-preset.js:15

// eslint-disable-next-line node/no-extraneous-require
const semver = require('semver')

let vueVersion = 2
try {
  // eslint-disable-next-line node/no-extraneous-require
  const Vue = require('vue/package.json')
  vueVersion = semver.major(Vue.version)
} catch (e) {}

let vueJest = null
try {
  vueJest = require.resolve(`@vue/vue${vueVersion}-jest`)
} catch (e) {
  throw new Error(`Cannot resolve "@vue/vue${vueVersion}-jest" module. Please make sure you have installed "@vue/vue${vueVersion}-jest" as a dev dependency.`)
}

module.exports = {
  testEnvironment: 'jsdom',
  moduleFileExtensions: [
    'js',
    'jsx',
    'json',
    // tell Jest to handle *.vue files
    'vue'
  ],
  transform: {
    // process *.vue files with vue-jest
    '^.+\\.vue$': vueJest,
    '.+\\.(css|styl|less|sass|scss|jpg|jpeg|png|svg|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|avif)$':
    require.resolve('jest-transform-stub'),
    '^.+\\.jsx?$': require.resolve('babel-jest')
  },

View on GitHub (pinned to 7eb93c169c)

Solutions

  1. Install the matching transformer: `npm i -D @vue/vue2-jest` (Vue 2) or `npm i -D @vue/vue3-jest` (Vue 3).
  2. Confirm the installed `vue` major matches the transformer you installed (`require('vue/package.json').version`).
  3. If resolvable but still failing, reinstall node_modules / clear Jest cache to fix hoisting.
Defensive patterns

Strategy: validation

Validate before calling

const semver = require('semver')
let vueVersion = 2
try { vueVersion = semver.major(require('vue/package.json').version) } catch {}
const name = `@vue/vue${vueVersion}-jest`
const pkg = require('./package.json')
const listed = (pkg.devDependencies || {})[name] || (pkg.dependencies || {})[name]
if (!listed) console.warn(`Missing devDependency: run npm i -D ${name}`)

Try / catch

// before resolving the preset, probe resolvability
try { require.resolve(`@vue/vue${vueVersion}-jest`) } catch { /* install it, then retry jest */ }

Prevention

When it happens

Trigger: Loading the default jest preset in a project where the matching `@vue/vueN-jest` package is not installed or not resolvable from the project root.

Common situations: Fresh unit-test setup; upgrading a Vue 2 project to Vue 3 without adding `@vue/vue3-jest`; the transformer package missing from devDependencies after dependency cleanup; hoisting issues in monorepos.

Related errors


AI-assisted analysis of vuejs/vue-cli@7eb93c169c (2026-08-13). Data as JSON: /api/errors/7061a9962ab4b11f. Report an issue: GitHub.