coreybutler/nvm-windows · error

Node.js v%s is only available in 32-bit and 64-bit.

Error message

Node.js v%s is only available in 32-bit and 64-bit.

What it means

Sent on the install status channel when the requested cpuarch is arm64 but web.IsNodeArm64bitAvailable(version) reports that Node.js does not publish an ARM64 build for that version. Node.js only started shipping official Windows ARM64 binaries at v20 (experimental) and later, so older versions trip this.

Source

Thrown at src/nvm.go:556

				if err != nil {
					if show_progress {
						notify(Notification{
							Title:   "Rollback Error",
							Message: err.Error(),
							Icon:    "error",
							Actions: []Action{
								{Type: "protocol", Label: "Open Explorer", URI: fmt.Sprintf("file://%s", filepath.ToSlash(filepath.Join(env.root)))},
							},
						})
					} else {
						fmt.Printf("rollback error: %v\n", err)
					}
				} else {
					fmt.Println("Rollback complete.")
				}

				if cpuarch == "arm64" && !web.IsNodeArm64bitAvailable(version) {
					status <- Status{Err: fmt.Errorf("Node.js v%s is only available in 32-bit and 64-bit.", version)}
				}

				if !node.IsVersionInstalled(env.root, version, cpuarch) {
					if !node.IsVersionAvailable(version) {
						url := web.GetFullNodeUrl("index.json")
						status <- Status{Err: fmt.Errorf("Version %s is not available.\n\nThe complete list of available versions can be found at %s", version, url)}
					}
				}

				return
			}
		}
	}()

	// Wait for the prior subroutine to initialize before starting the next dependent thread
	time.Sleep(300 * time.Millisecond)

	go func() {

View on GitHub (pinned to 5b18223ca1)

Solutions

  1. Pick a version with ARM64 builds — v20+ (ideally the newest release): `nvm install latest arm64`.
  2. Fall back to emulated x64: `nvm install <version> 64` (x64 Node runs under Windows 11 ARM emulation).
  3. Check nodejs.org download pages or the index.json URL for which versions carry win-arm64 artifacts.

Example fix

# before
nvm install 18.20.0 arm64
# after
nvm install 20.11.0 arm64
Defensive patterns

Strategy: validation

Validate before calling

# bash: only request arm64 where it exists
if [ "$ARCH" = arm64 ]; then
  major=$(printf '%s' "$V" | sed -E 's/^v?([0-9]+).*/\1/')
  [ "$major" -ge 20 ] || { echo "arm64 needs node >= 20; falling back to 64"; ARCH=64; }
fi
nvm install "$V" "$ARCH"

Prevention

When it happens

Trigger: `nvm install 18.20.0 arm64` (no ARM64 build exists for v18), or `nvm install 20.x arm64` for an early point release without arm64 artifacts, after the version was already found locally installed (this branch runs on the 'already installed' path).

Common situations: Windows-on-ARM (Surface Pro X, Snapdragon laptops) users trying older LTS lines; users assuming all versions have arm64 because `nvm arch` shows arm64.

Related errors


AI-assisted analysis of coreybutler/nvm-windows@5b18223ca1 (2026-08-15). Data as JSON: /api/errors/d3a9f4a9bf1cd3d9. Report an issue: GitHub.