{"record":{"id":"2ffce287eb59e5d3","repo":"angular/angular-cli","slug":"warning-the-current-version-of-node-nodeversio","errorCode":null,"errorMessage":"Warning: The current version of Node (${nodeVersion}) is not supported by Angular.","messagePattern":"Warning: The current version of Node \\((.+?)\\) is not supported by Angular\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/angular/cli/src/commands/version/cli.ts","lineNumber":111,"sourceCode":"      },\n      { label: 'Operating System', value: `${os} ${arch}` },\n    );\n\n    const maxHeaderLabelLength = Math.max(...headerInfo.map((l) => l.label.length));\n\n    const header = headerInfo\n      .map(\n        ({ label, value }) =>\n          colors.bold(label.padEnd(maxHeaderLabelLength + 2)) + `: ${colors.cyan(value)}`,\n      )\n      .join('\\n');\n\n    const packageTable = this.formatPackageTable(packages);\n\n    logger.info([ASCII_ART, header, packageTable].join('\\n\\n'));\n\n    if (unsupportedNodeVersion) {\n      logger.warn(\n        `Warning: The current version of Node (${nodeVersion}) is not supported by Angular.`,\n      );\n    }\n  }\n\n  /**\n   * Formats the package table section of the version output.\n   * @param versions A map of package names to their versions.\n   * @returns A string containing the formatted package table.\n   */\n  private formatPackageTable(versions: Record<string, PackageVersionInfo>): string {\n    const versionKeys = Object.keys(versions);\n    if (versionKeys.length === 0) {\n      return '';\n    }\n\n    const headers = {\n      name: 'Package',","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular/cli/src/commands/version/cli.ts#L93-L129","documentation":"The Angular CLI's `ng version` command checks the running Node.js version against Angular's supported range. If unsupported (too old or too new/unreleased), it prints a warning so the developer knows the combination is untested, while still showing version output.","triggerScenarios":"Running any CLI command that renders version info (`ng version`, or `onMissingTarget` fallback paths) with a Node.js version outside the range declared in the CLI's supported engines (e.g. odd-numbered Node releases, EOL versions, or pre-release majors).","commonSituations":"Using an LTS-odd Node (17, 19, 23) that Angular doesn't support, running an old CLI on a newly upgraded Node, or CI images with a mismatched Node version.","solutions":["Switch to a Node.js version in Angular's supported range (use nvm: `nvm install --lts && nvm use --lts`).","Update the Angular CLI/packages (`ng update`) if your Node is newer than the supported range of the installed CLI.","Check `.nvmrc`/CI config to pin the supported Node version across the team."],"exampleFix":"// before (package.json scripts relying on ambient node)\n\"start\": \"ng serve\"\n// after (pin engines and use a supported node via volta/engines)\n\"engines\": { \"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\" }","handlingStrategy":"validation","validationCode":"// check supported range before running ng commands\nconst supported = process.env.SUPPORTED_NODE || /^20\\.|^22\\.|^24\\./;\nif (!supported.test(process.versions.node)) {\n  console.warn(`Node ${process.versions.node} may be unsupported; switch with nvm.`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin Node version in `.nvmrc`, `engines`, or Volta.","Keep Node on an Angular-supported LTS line.","Check Angular release notes for newly supported Node majors before upgrading."],"tags":["node","version","angular-cli","environment"],"backgroundTag":"unsupported-node-version","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}