{"record":{"id":"2a5f5dbc1ffd0ea6","repo":"angular/angular-cli","slug":"could-not-find-angular-cli-version-runnerversi","errorCode":null,"errorMessage":"Could not find @angular/cli version '${runnerVersion}'.","messagePattern":"Could not find @angular/cli version '(.+?)'\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/angular/cli/src/commands/update/utilities/cli-version.ts","lineNumber":66,"sourceCode":" * Checks if the installed CLI version is compatible with the packages being updated.\n * @param packagesToUpdate The list of packages being updated.\n * @param logger The logger instance.\n * @param packageManager The package manager instance.\n * @param verbose Whether to log verbose output.\n * @param next Whether to check for the next version.\n * @returns The version of the CLI to install, or null if the current version is compatible.\n */\nexport async function checkCLIVersion(\n  packagesToUpdate: string[],\n  logger: logging.LoggerApi,\n  packageManager: PackageManager,\n  next = false,\n): Promise<string | null> {\n  const runnerVersion = getCLIUpdateRunnerVersion(packagesToUpdate, next);\n  const manifest = await packageManager.getManifest(`@angular/cli@${runnerVersion}`);\n\n  if (!manifest) {\n    logger.warn(`Could not find @angular/cli version '${runnerVersion}'.`);\n\n    return null;\n  }\n\n  const version = manifest.version;\n\n  return VERSION.full === version ? null : String(runnerVersion);\n}\n\n/**\n * Determines the version of the CLI to use for the update process.\n * @param packagesToUpdate The list of packages being updated.\n * @param next Whether to use the next version.\n * @returns The version or tag to use for the CLI update runner.\n */\nexport function getCLIUpdateRunnerVersion(\n  packagesToUpdate: string[] | undefined,\n  next: boolean,","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular/cli/src/commands/update/utilities/cli-version.ts#L48-L84","documentation":"checkCLIVersion computes the @angular/cli version that should run the update (via getCLIUpdateRunnerVersion) and fetches its manifest from the package manager. If the registry has no manifest for that version, it warns and returns null, causing cliVersionToInstall to treat the CLI as adequate rather than installing a temporary one.","triggerScenarios":"Calling checkCLIVersion during `ng update` when packageManager.getManifest(`@angular/cli@${runnerVersion}`) returns null — e.g., the computed runner version/tag does not exist on the configured registry, or the fetch fails to resolve a manifest.","commonSituations":"Custom/internal registries that proxy npm but lack some @angular/cli dist-tags; offline environments; using --next against a registry with no 'next' dist-tag published yet; mirrors with stale metadata.","solutions":["Point npm at the public npm registry (or ensure your proxy mirrors @angular/cli fully): check .npmrc registry settings.","Run `npm view @angular/cli versions` / `npm view @angular/cli dist-tags` to confirm the needed version/tag exists on your registry.","If offline, sync your registry mirror or connect to the network, then retry ng update.","Proceed without action if acceptable — returning null means the CLI continues the update with the currently installed version.","Update @angular/cli manually to a compatible version before running ng update."],"exampleFix":"// before: .npmrc pointing to incomplete mirror\nregistry=https://internalmirror.local/npm\n// after: scope @angular to public npm or fix mirror sync\nregistry=https://registry.npmjs.org/","handlingStrategy":"retry","validationCode":"import { execSync } from 'node:child_process';\ntry {\n  execSync('npm view @angular/cli@latest version', { stdio: 'pipe' });\n} catch {\n  throw new Error('@angular/cli not resolvable from configured registry; fix .npmrc or network');\n}","typeGuard":null,"tryCatchPattern":"const runner = await checkCLIVersion(pkgs, next);\nif (runner === null) {\n  logger.warn('CLI runner version unavailable from registry; continuing with installed CLI');\n}","preventionTips":["Ensure your registry (.npmrc) mirrors @angular/cli dist-tags, including 'next'.","Run npm ping / npm view @angular/cli before offline or air-gapped updates.","Refresh stale mirror metadata if dist-tags are missing.","Update @angular/cli manually to a supported version as a fallback."],"tags":["update","registry","versioning","network","angular-cli"],"backgroundTag":"cli-version-not-found-on-registry","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}