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
- Install the 32-bit build instead: `nvm install <version> 32`.
- Pick a modern version that has x64 artifacts (effectively everything from v4 onward): `nvm install latest`.
- 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
- Don't force an arch for legacy (0.x/early) versions — let nvm pick.
- Check the win-x64 entry in index.json when scripting old versions.
- Keep `nvm arch` aligned with the artifacts your versions actually ship.
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
- Node.js v%s is only available in 32-bit and 64-bit.
- Version %s is not available. The complete list of available
- "%s" is not a valid CPU architecture. Must be 32, 64, or arm
- "%s" is not a valid version. Please use a valid semantic ver
- Node.js v%s is not yet released or is not available for down
AI-assisted analysis of coreybutler/nvm-windows@5b18223ca1 (2026-08-15).
Data as JSON: /api/errors/ebfa6da10e574e52.
Report an issue: GitHub.