{"record":{"id":"58c18b39e56ef8a5","repo":"quasarframework/quasar","slug":"quasar-config-file-invalid-vite-plugin-specified-58c18b","errorCode":null,"errorMessage":"quasar.config file > invalid Vite plugin specified (cannot find it): ${name}","messagePattern":"quasar\\.config file > invalid Vite plugin specified \\(cannot find it\\): (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app-vite/lib/config-tools.js","lineNumber":86,"sourceCode":"      acc.push(\n        // protect against the Vite plugin mutating its own options and triggering endless cfg diff loop\n        merge({}, name)\n      )\n      continue\n    }\n\n    if (typeof name !== 'string') {\n      warn('quasar.config file > invalid Vite plugin specified: ' + name)\n      warn(\n        \"Correct form: [ 'my-vite-plugin-name', { /* pluginOpts */ } ] or [ pluginFn, { /* pluginOpts */ } ]\"\n      )\n      continue\n    }\n\n    const plugin = await getPackage(name, appDir)\n\n    if (!plugin) {\n      warn(\n        'quasar.config file > invalid Vite plugin specified (cannot find it): ' +\n          name\n      )\n      continue\n    }\n\n    const pluginFn =\n      plugin.default?.default || // example: vite-plugin-checker\n      plugin.default ||\n      plugin\n\n    acc.push(\n      pluginFn(\n        // protect against the Vite plugin mutating its own options and triggering endless cfg diff loop\n        merge({}, pluginOpts)\n      )\n    )\n  }","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/config-tools.js#L68-L104","documentation":"Quasar CLI's parseVitePlugins resolves each plugin listed in quasar.config > vite.plugins by looking the package up in the app directory. When getPackage cannot find an installable package for the given name, it warns that the Vite plugin is invalid and skips it, so the plugin will not be applied to the build.","triggerScenarios":"quasar.config file (or vite.config extension) lists a vite plugin name that is not installed in the project, is misspelled, or resolves to a package without a valid plugin export; getPackage(name, appDir) returns null and the warning is emitted.","commonSituations":"Typo in the plugin name (e.g. 'vite-plugin-pwa' vs '@vitejs/plugin-legacy'); dependency added to a workspace root but not the app package; plugin removed from package.json during a dependency cleanup; forgetting to run pnpm/npm install after cloning.","solutions":["Install the missing plugin in the app: pnpm add -D <plugin-name> from the app directory.","Check the plugin name spelling and correct package scope in quasar.config > vite.plugins.","Verify the package exports a valid Vite plugin function/array (some packages need a default export or a subpath import).","Reinstall dependencies (rm -rf node_modules && pnpm install) to fix broken workspace links."],"exampleFix":"// before (quasar.config.js)\nvite: { plugins: ['viteplugpwa'] }\n// after\nvite: { plugins: ['vite-plugin-pwa'] } // and: pnpm add -D vite-plugin-pwa","handlingStrategy":"validation","validationCode":"// in quasar.config.js, before listing\nconst plugins = ['vite-plugin-pwa']\nfor (const p of plugins) {\n  try { require.resolve(p, { paths: [__dirname] }) }\n  catch { throw new Error(`Vite plugin not installed: ${p} — run: pnpm add -D ${p}`) }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add Vite plugins as devDependencies of the app package, not a workspace root.","Copy plugin names exactly from their npm package name including @scope/.","Run pnpm install after pulling changes that touch package.json."],"tags":["vite","plugin-resolution","configuration","build"],"backgroundTag":"missing-dependency","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}