quasarframework/quasar · error

App Extension has no command called "${cmd}"

Error message

App Extension has no command called "${cmd}"

What it means

`quasar run <extId> <cmd>` invokes a command registered by the App Extension. When the requested command name is not present in `hooks.commands`, the CLI prints the available command list, warns with the offending name and exits 1. This prevents silently executing nothing.

Source

Thrown at app-vite/lib/cmd/run.js:71

  if (Object.keys(hooks.commands).length === 0) {
    ext.logger.warn(`App Extension has no commands registered`)
    return
  }

  const cmdList = Object.keys(hooks.commands).join(' | ')
  ext.logger.log(`Command list: ${cmdList}`)
}

if (!cmd) {
  list()
  process.exit(0)
}

const fn = hooks.commands[cmd]
if (!fn) {
  list()
  warn()
  ext.logger.warn(`App Extension has no command called "${cmd}"`)
  warn()
  process.exit(1)
}

ext.logger.log(`Running App Extension command "${cmd}"`)
log()

process.argv = [
  ...process.argv.slice(0, 2),
  ...process.argv.slice(4).filter(arg => arg !== '--no-color')
]

await fn(process.argv)

View on GitHub (pinned to 4841521b5f)

Solutions

  1. Use a listed command — the CLI prints `Command list: a | b | c` right before this warning; pick from those.
  2. Run `quasar run <extId>` with no command to re-list valid commands.
  3. Update the extension if its current version should provide the command: `quasar ext update <extId>`.

Example fix

// before
quasar run @quasar/icon-genie build   # no such command
// after
quasar run @quasar/icon-genie        # lists commands, then:
quasar run @quasar/icon-genie generate
Defensive patterns

Strategy: validation

Validate before calling

// discover valid commands first
const list = execSync(`quasar run ${extId}`).toString();
const cmds = (list.match(/Command list: (.*)/) || [])[1]?.split('|').map(s => s.trim()) ?? [];
if (!cmds.includes(cmd)) throw new Error(`unknown command ${cmd}; valid: ${cmds}`);

Try / catch

try {
  execSync(`quasar run ${extId} ${cmd}`, { stdio: 'inherit' });
} catch (err) {
  if (String(err.stderr).includes('has no command called')) {
    console.error(execSync(`quasar run ${extId}`).toString()); // print valid list
  } else throw err;
}

Prevention

When it happens

Trigger: Running `quasar run <extId> <cmd>` where `hooks.commands[cmd]` is undefined — the extension is installed but exposes no command with that exact key (run.js:68-74).

Common situations: Typo or wrong casing in the command name; calling a command from an extension version that renamed it; copying a `quasar run` invocation from another project's docs.

Related errors


AI-assisted analysis of quasarframework/quasar@4841521b5f (2026-08-30). Data as JSON: /api/errors/70b3f8c560e3ba66. Report an issue: GitHub.