{"record":{"id":"4af9c6171b5d4748","repo":"quasarframework/quasar","slug":"one-of-your-installed-app-extensions-failed-to-run","errorCode":null,"errorMessage":"One of your installed App Extensions failed to run.","messagePattern":"One of your installed App Extensions failed to run\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app-vite/lib/quasar-config-file.js","lineNumber":912,"sourceCode":"          if (Object(overrides) === overrides) {\n            rawQuasarConf = merge(rawQuasarConf, overrides)\n          }\n          resolveAppExtensionAssets(\n            rawQuasarConf,\n            tildeAssetCounts,\n            hook.packageDir\n          )\n        }\n      )\n    } catch (err) {\n      console.log()\n      console.error(err)\n\n      if (this.#shouldFail) {\n        fatal('One of your installed App Extensions failed to run', 'FAIL')\n      }\n\n      warn('One of your installed App Extensions failed to run.\\n')\n      return\n    }\n\n    const cfg = {\n      ...rawQuasarConf,\n      metaConf\n    }\n\n    // we need to know if using SSR + PWA immediately\n    if (this.#ctx.mode.ssr) {\n      cfg.ssr = merge(\n        {\n          pwa: false,\n          pwaOfflineHtmlFilename: 'offline.html',\n          manualStoreHydration: false,\n          manualPostHydrationTrigger: false,\n          prodPort: 3000, // gets superseded in production by an eventual process.env.PORT\n          prodScriptNamedExport: false","sourceCodeStart":894,"sourceCodeEnd":930,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/quasar-config-file.js#L894-L930","documentation":"While computing the final config, Quasar executes hooks/extensions of installed App Extensions; if one of them throws, the error is logged and this message is reported. Fatal under shouldFail; otherwise the run warns and stops config computation, since the extension could have mutated required config.","triggerScenarios":"An installed App Extension's hook (registered via api.extendQuasarConf or similar lifecycle) throws during #computeConfig — e.g. the extension package is broken, incompatible with the current @quasar/app-vite version, or its hook references files/options missing in the project.","commonSituations":"After installing an AE whose version lags behind the CLI (breaking API change); an AE expecting files/folders the project lacks; a corrupted node_modules after a partial install; Node version incompatibility with AE code.","solutions":["Look at the console.error(err) stack printed just above the message to identify which extension failed.","Update the failing App Extension (`quasar ext update <name>`) and @quasar/app-vite to latest compatible versions.","Remove the extension if unneeded (`quasar ext remove <name>`) and re-run.","Reinstall dependencies (rm -rf node_modules && pnpm install) to fix corrupted packages.","Report/patch the extension if its hook itself is buggy."],"exampleFix":"# before\n$ quasar dev\n# after\n$ quasar ext update my-extension\n$ pnpm install\n$ quasar dev","handlingStrategy":"try-catch","validationCode":"// Verify installed extensions are loadable before dev/build:\nimport { readFileSync, existsSync } from 'node:fs'\nconst exts = JSON.parse(readFileSync('src/quasar.extensions.json', 'utf8'))\nfor (const name of Object.keys(exts)) {\n  if (!existsSync(`node_modules/${name}`)) console.warn(`Missing extension: ${name}`)\n}","typeGuard":null,"tryCatchPattern":"try {\n  await runExtensionHooks('extendQuasarConf', api)\n} catch (err) {\n  console.error(`App Extension ${name} hook failed:`, err)\n}","preventionTips":["Keep App Extensions and @quasar/app-vite versions in sync; update together.","Read the extension's README for required files/folders before installing.","After a partial install failure, reinstall node_modules cleanly.","Test `quasar dev` immediately after adding an extension."],"tags":["app-extension","config","hook","compatibility"],"backgroundTag":"app-extension-hook-crash","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}