{"record":{"id":"9aad6ae7b657d167","repo":"quasarframework/quasar","slug":"quasar-app-extension-is-not-installed","errorCode":null,"errorMessage":"Quasar App Extension is not installed...","messagePattern":"Quasar App Extension is not installed\\.\\.\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app-vite/lib/app-extension/AppExtensionInstance.js","lineNumber":272,"sourceCode":"      hooks.exitLog.forEach(msg => {\n        console.log(msg)\n      })\n      console.log()\n    }\n  }\n\n  async uninstall(skipPkgUninstall) {\n    this.logger.log(skipPkgUninstall ? 'Uninvoking...' : 'Uninstalling...')\n\n    // verify if already installed\n    if (skipPkgUninstall) {\n      if (!this.isInstalled) {\n        this.logger.fatal(\n          `Tried to uninvoke App Extension but there's no npm package installed for it.`\n        )\n      }\n    } else if (!this.isInstalled) {\n      this.logger.warn(`Quasar App Extension is not installed...`)\n      return\n    }\n\n    const hooks = await this.#runUninstallScript()\n\n    this.#appExtJson.remove(this.extId)\n\n    if (skipPkgUninstall !== true) {\n      await this.#uninstallPackage()\n    }\n\n    this.logger.log('Removed App Extension')\n\n    if (hooks && hooks.exitLog.length !== 0) {\n      hooks.exitLog.forEach(msg => {\n        console.log(msg)\n      })\n      console.log()","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/app-extension/AppExtensionInstance.js#L254-L290","documentation":"quasar ext <name> uninstall / ext remove checks this.isInstalled (npm package present in the project). If the package was never installed (or already removed from node_modules/package.json), it warns and returns without touching the app-ext registry — the uninstall is a no-op instead of an error.","triggerScenarios":"Running `quasar ext uninstall <ext-id>` (or the uninstall path of AppExtensionInstance) when the extension's npm package is not in the project's dependencies/node_modules.","commonSituations":"Extension manually removed with npm uninstall but its entry handling still invoked; wrong extension id typed so it resolves to a non-installed package; a failed install left nothing to uninstall; running in a fresh clone where node_modules wasn't fully installed.","solutions":["If the goal was cleanup, manually remove leftover config in quasar.config (extensions array) and .quasar/app-ext.json entry","Verify the extension id spelling (e.g. @quasar/quasar-app-extension-x vs x)","Run pnpm install / npm install if node_modules is incomplete, then retry","Nothing to fix if intentional — the warning confirms there is nothing installed"],"exampleFix":"// before\nquasar ext uninstall quasar-app-extension-tyop\n// after: use the exact published package/ext id\nquasar ext uninstall @quasar/quasar-app-extension-apollo","handlingStrategy":"validation","validationCode":"// before uninstalling, confirm the package exists\nconst pkg = require('./package.json')\nconst id = '@quasar/quasar-app-extension-apollo'\nif (!pkg.devDependencies?.[id] && !pkg.dependencies?.[id]) {\n  console.log('Nothing to uninstall; cleaning quasar.config manually')\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always uninstall via `quasar ext remove <id>` rather than removing the npm package directly","Verify extension ids with `quasar ext list` before remove/uninstall","Keep quasar.config extensions and package.json dependencies in sync","Run the package manager install after any manual node_modules cleanup"],"tags":["app-extension","uninstall","npm-package"],"backgroundTag":"extension-not-installed","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}