{"record":{"id":"7061a9962ab4b11f","repo":"vuejs/vue-cli","slug":"cannot-resolve-vue-vue-vueversion-jest-module","errorCode":null,"errorMessage":"Cannot resolve \"@vue/vue${vueVersion}-jest\" module. Please make sure you have installed \"@vue/vue${vueVersion}-jest\" as a dev dependency.","messagePattern":"Cannot resolve \"@vue/vue(.+?)-jest\" module\\. Please make sure you have installed \"@vue/vue(.+?)-jest\" as a dev dependency\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@vue/cli-plugin-unit-jest/presets/default/jest-preset.js","lineNumber":15,"sourceCode":"// eslint-disable-next-line node/no-extraneous-require\nconst semver = require('semver')\n\nlet vueVersion = 2\ntry {\n  // eslint-disable-next-line node/no-extraneous-require\n  const Vue = require('vue/package.json')\n  vueVersion = semver.major(Vue.version)\n} catch (e) {}\n\nlet vueJest = null\ntry {\n  vueJest = require.resolve(`@vue/vue${vueVersion}-jest`)\n} catch (e) {\n  throw new Error(`Cannot resolve \"@vue/vue${vueVersion}-jest\" module. Please make sure you have installed \"@vue/vue${vueVersion}-jest\" as a dev dependency.`)\n}\n\nmodule.exports = {\n  testEnvironment: 'jsdom',\n  moduleFileExtensions: [\n    'js',\n    'jsx',\n    'json',\n    // tell Jest to handle *.vue files\n    'vue'\n  ],\n  transform: {\n    // process *.vue files with vue-jest\n    '^.+\\\\.vue$': vueJest,\n    '.+\\\\.(css|styl|less|sass|scss|jpg|jpeg|png|svg|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|avif)$':\n    require.resolve('jest-transform-stub'),\n    '^.+\\\\.jsx?$': require.resolve('babel-jest')\n  },","sourceCodeStart":1,"sourceCodeEnd":33,"githubUrl":"https://github.com/vuejs/vue-cli/blob/7eb93c169c7520935252e2473387f923ef80d856/packages/@vue/cli-plugin-unit-jest/presets/default/jest-preset.js#L1-L33","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Install the matching transformer: `npm i -D @vue/vue2-jest` (Vue 2) or `npm i -D @vue/vue3-jest` (Vue 3).","Confirm the installed `vue` major matches the transformer you installed (`require('vue/package.json').version`).","If resolvable but still failing, reinstall node_modules / clear Jest cache to fix hoisting."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const semver = require('semver')\nlet vueVersion = 2\ntry { vueVersion = semver.major(require('vue/package.json').version) } catch {}\nconst name = `@vue/vue${vueVersion}-jest`\nconst pkg = require('./package.json')\nconst listed = (pkg.devDependencies || {})[name] || (pkg.dependencies || {})[name]\nif (!listed) console.warn(`Missing devDependency: run npm i -D ${name}`)","typeGuard":null,"tryCatchPattern":"// before resolving the preset, probe resolvability\ntry { require.resolve(`@vue/vue${vueVersion}-jest`) } catch { /* install it, then retry jest */ }","preventionTips":["Add the matching @vue/vueN-jest to devDependencies whenever you add @vue/cli-plugin-unit-jest.","Re-check after a Vue 2 -> 3 migration."],"tags":["jest","unit-test","vue","dependency"],"backgroundTag":null,"analyzedSha":"7eb93c169c7520935252e2473387f923ef80d856","analyzedAt":"2026-08-13T10:13:37.803Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}