coreybutler/nvm-windows · error

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

Error message

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

What it means

Sent on the install status channel when cpuarch is 64 but web.IsNode64bitAvailable(version) is false — i.e. that Node.js release has no win-x64 binary. This only happens for very old or special builds: Node.js shipped x64 for most releases, so it is mainly historical versions and odd builds.

Source

Thrown at src/nvm.go:658

			if err != nil {
				status <- Status{Err: err, Help: true}
				return
			}
		}

		if err != nil {
			status <- Status{Err: fmt.Errorf(`"%s" is not a valid version.`+"\n"+`Please use a valid semantic version number, "lts", or "latest".`, requestedVersion)}
			return
		}

		if checkVersionExceedsLatest(version) {
			status <- Status{Err: fmt.Errorf("Node.js v%s is not yet released or is not available for download yet.", version)}
			return
		}

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

		// Check to see if the version is already installed
		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
			}

			// Make the output directories
			root, err := os.MkdirTemp("", "nvm-install-*")
			if err != nil {
				status <- Status{Err: err}
			}
			defer os.RemoveAll(root)
			os.MkdirAll(filepath.Join(root, "v"+version, "node_modules"), os.ModeDir)

View on GitHub (pinned to 5b18223ca1)

Solutions

  1. Install the 32-bit build instead: `nvm install <version> 32`.
  2. Pick a modern version that has x64 artifacts (effectively everything from v4 onward): `nvm install latest`.
  3. Confirm availability on the index.json URL / nodejs.org download page.

Example fix

# before
nvm install 0.10.36 64
# after
nvm install 0.10.36 32
Defensive patterns

Strategy: fallback

Validate before calling

# bash: fall back to 32-bit for versions without x64
LATEST_X64=4  # x64 artifacts exist from v4 onward
major=$(printf '%s' "$V" | sed -E 's/^v?([0-9]+).*/\1/')
[ "$major" -lt "$LATEST_X64" ] && ARCH=32
nvm install "$V" "${ARCH:-64}"

Try / catch

nvm install "$V" 64 || { echo 'x64 unavailable, trying 32-bit'; nvm install "$V" 32; }

Prevention

When it happens

Trigger: `nvm install <very-old-version> 64` where nodejs.org only published a 32-bit (ia32) zip for it; also possible when the index.json metadata for that version lacks an x64 entry.

Common situations: Installing legacy versions (pre-x64 era, e.g. 0.x releases) on modern hardware; users forcing 64 explicitly when `nvm arch` already chose it.

Related errors


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