{"record":{"id":"f9cd86c0c9fa311c","repo":"quasarframework/quasar","slug":"app-extension-has-no-commands-registered","errorCode":null,"errorMessage":"App Extension has no commands registered","messagePattern":"App Extension has no commands registered","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"app-vite/lib/cmd/run.js","lineNumber":54,"sourceCode":"import { 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()\n  process.exit(0)\n}\n\nconst fn = hooks.commands[cmd]\nif (!fn) {\n  list()\n  warn()\n  ext.logger.warn(`App Extension has no command called \"${cmd}\"`)\n  warn()","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/cmd/run.js#L36-L72","documentation":"`quasar run <extId>` with no command name lists the extension's registered commands. If the extension's `run()` hooks expose an empty `commands` object, the CLI warns that there is nothing to list. Non-fatal; the command returns normally. The extension simply does not define any CLI commands.","triggerScenarios":"Running `quasar run <extId>` (list path) when `Object.keys(hooks.commands).length === 0` for the installed extension (run.js:52-56).","commonSituations":"Extensions that only provide install-time hooks (index.js with hooks but no commands) — expected output; running `quasar run` on an extension whose commands live under a different id; outdated extension version where commands were renamed or removed.","solutions":["Nothing is broken — this extension registers no commands; use its other interfaces (config, boot files, hooks).","Check the extension's docs for the correct subcommands or a newer version.","Update the extension (`quasar ext update <extId>`) if its docs advertise commands."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// not an error; parse the list output to detect command-less extensions\nconst out = execSync(`quasar run ${extId}`).toString();\nif (out.includes('has no commands registered')) useExtensionDocsInstead(extId);","preventionTips":["Read the extension's README to see whether it exposes CLI commands at all.","Treat this warning as informational — the extension works through hooks/config.","Update the extension if its current docs advertise commands."],"tags":["cli","app-extension","no-commands"],"backgroundTag":"extension-has-no-commands","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}