{"record":{"id":"8409fe3e15069069","repo":"quasarframework/quasar","slug":"no-such-app-extension-is-installed","errorCode":null,"errorMessage":"No such App Extension is installed","messagePattern":"No such App Extension is installed","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app-vite/lib/cmd/run.js","lineNumber":45,"sourceCode":"\n  Options\n    --no-color  Disable colored output\n  `)\n\n  process.exit(0)\n}\n\nimport { log, warn } from '../utils/logger.js'\nimport { getExtensionLogger } from '../app-extension/logger.js'\n\nimport { getCtx } from '../utils/get-ctx.js'\n\nconst { appExt } = getCtx()\n\nconst ext = appExt.getInstance(extId)\nif (ext === void 0) {\n  warn()\n  getExtensionLogger(extId).warn('No such App Extension is installed')\n  warn()\n  process.exit(1)\n}\n\nconst hooks = await ext.run()\n\nconst list = () => {\n  if (Object.keys(hooks.commands).length === 0) {\n    ext.logger.warn(`App Extension has no commands registered`)\n    return\n  }\n\n  const cmdList = Object.keys(hooks.commands).join(' | ')\n  ext.logger.log(`Command list: ${cmdList}`)\n}\n\nif (!cmd) {\n  list()","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/cmd/run.js#L27-L63","documentation":"`quasar run <extId>` (or its alias) looks up an installed Quasar App Extension by its npm-short id. When no such extension is registered in the project, the CLI warns and exits 1. Extensions become available only after being installed via `quasar ext add <extId>`. Note: the message lacks the extension id interpolation — check which id you passed.","triggerScenarios":"Calling `quasar run <extId> [cmd]` where `appExt.getInstance(extId)` returns undefined — the extension package is not installed in the project (run.js:38-45).","commonSituations":"Typo in the extension id; extension added in another project/branch; forgetting `quasar ext add` after cloning a repo; extension uninstalled but documentation still references `quasar run`.","solutions":["Install the extension first: `quasar ext add <extId>`.","List installed extensions with `quasar ext list` (or inspect quasar.config > extensions) to confirm the exact id.","Check the id spelling against the extension's documentation."],"exampleFix":"// before\nquasar run myext cmd\n// after\nquasar ext add @quasar/myext\nquasar run @quasar/myext cmd","handlingStrategy":"validation","validationCode":"// check installed extensions before `quasar run`\nconst conf = JSON.parse(stripJsonComments(fs.readFileSync('quasar.config.js', 'utf8').replace(/export default[\\s\\S]*/, '')));\n// simpler: verify the package exists\nconst pkg = `@quasar/${extId}`;\nif (!fs.existsSync(`node_modules/${pkg}`)) await exec(`quasar ext add ${extId}`);","typeGuard":null,"tryCatchPattern":"try {\n  execSync(`quasar run ${extId} ${cmd}`, { stdio: 'inherit' });\n} catch (err) {\n  if (String(err.stderr).includes('No such App Extension')) {\n    execSync(`quasar ext add ${extId}`, { stdio: 'inherit' });\n    execSync(`quasar run ${extId} ${cmd}`, { stdio: 'inherit' });\n  } else throw err;\n}","preventionTips":["Always `quasar ext add <extId>` after cloning a project that uses extensions.","List extensions (`quasar ext list`) to confirm ids before scripting `quasar run`.","Commit extensions to quasar.config so fresh clones install them."],"tags":["cli","app-extension","not-installed"],"backgroundTag":"extension-not-installed","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}