coreybutler/nvm-windows · error
failed to download v%v arm 64-bit executable
Error message
failed to download v%v arm 64-bit executable
What it means
Sent on the install status channel when cpuarch is arm64 (or all) and web.GetNodeJS(root, version, "arm64", append64) returns false — the win-arm64 zip could not be downloaded or extracted. Note it passes append64 (the 32-bit installed flag), mirroring the 64-bit append behavior for mixed installs.
Source
Thrown at src/nvm.go:707
append64 := node.IsVersionInstalled(env.root, version, "32")
if (cpuarch == "32" || cpuarch == "all") && !node.IsVersionInstalled(root, version, "32") {
success := web.GetNodeJS(root, version, "32", append32)
if !success {
status <- Status{Err: fmt.Errorf("failed to download v%v 32-bit executable", version)}
return
}
}
if (cpuarch == "64" || cpuarch == "all") && !node.IsVersionInstalled(root, version, "64") {
success := web.GetNodeJS(root, version, "64", append64)
if !success {
status <- Status{Err: fmt.Errorf("failed to download v%v 64-bit executable", version)}
return
}
}
if (cpuarch == "arm64" || cpuarch == "all") && !node.IsVersionInstalled(root, version, "arm64") {
success := web.GetNodeJS(root, version, "arm64", append64)
if !success {
status <- Status{Err: fmt.Errorf("failed to download v%v arm 64-bit executable", version)}
return
}
}
if file.Exists(filepath.Join(root, "v"+version, "node_modules", "npm")) {
utility.DebugLogf("move %v to %v", filepath.Join(root, "v"+version), filepath.Join(env.root, "v"+version))
if rnerr := utility.Rename(filepath.Join(root, "v"+version), filepath.Join(env.root, "v"+version)); rnerr != nil {
status <- Status{Err: err}
}
utility.DebugFn(func() {
utility.DebugLogf("env root: %v", env.root)
cmd := exec.Command("cmd", "/C", "dir", filepath.Join(env.root, "v"+version))
out, err := cmd.CombinedOutput()
if err != nil {
utility.DebugLog(err.Error())
} else {
utility.DebugLog(string(out))
}View on GitHub (pinned to 5b18223ca1)
Solutions
- Retry the download (transient failures are common).
- Switch to the official distribution: `nvm node_mirror https://nodejs.org/dist` — arm64 artifacts exist there for supported versions.
- Confirm the version actually publishes win-arm64 (v20+); otherwise use `nvm install <version> 64` and rely on x64 emulation.
- Check proxy settings with `nvm proxy` and free TEMP disk space.
Example fix
# before (mirror without arm64) nvm install 20.11.0 arm64 # after nvm node_mirror https://nodejs.org/dist nvm install 20.11.0 arm64
Defensive patterns
Strategy: fallback
Validate before calling
# bash: confirm arm64 artifact exists, else fall back to x64 emulation
URL="${NVM_NODE_MIRROR:-https://nodejs.org/dist}/v$V/win-arm64/node.exe"
if ! curl -sfI "$URL" >/dev/null; then echo 'no arm64 build; using 64' >&2; ARCH=64; fi
nvm install "$V" "${ARCH:-arm64}" Try / catch
nvm install "$V" arm64 || { echo 'arm64 fetch failed; falling back to x64'; nvm install "$V" 64; } Prevention
- On ARM machines, default to `64` and opt into arm64 only for v20+.
- Use the official nodejs.org dist mirror when you need arm64 zips.
- Check the win-arm64 folder for the exact point release before pinning.
When it happens
Trigger: `nvm install 20.11.0 arm64` while the arm64 artifact fetch fails: version predates arm64 publishing even though IsNodeArm64bitAvailable let it pass (stale index), mirror lacks win-arm64 zips, or generic network failure.
Common situations: Windows-on-ARM users with a mirror that only mirrors x86/x64; corporate proxies; a very new version whose arm64 zip is not yet on the mirror; disk space in TEMP.
Related errors
- Node.js v%s is only available in 32-bit and 64-bit.
- Failed to extract npm: %v
- Could not download npm for node v%s. Please visit %s to down
- error: failed to download new version: %v
- Version %s is not available. The complete list of available
AI-assisted analysis of coreybutler/nvm-windows@5b18223ca1 (2026-08-15).
Data as JSON: /api/errors/b901a5ee21b16593.
Report an issue: GitHub.