{"record":{"id":"d3a9f4a9bf1cd3d9","repo":"coreybutler/nvm-windows","slug":"node-js-v-s-is-only-available-in-32-bit-and-64-bit","errorCode":null,"errorMessage":"Node.js v%s is only available in 32-bit and 64-bit.","messagePattern":"Node\\.js v(.+?) is only available in 32-bit and 64-bit\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/nvm.go","lineNumber":556,"sourceCode":"\t\t\t\tif err != nil {\n\t\t\t\t\tif show_progress {\n\t\t\t\t\t\tnotify(Notification{\n\t\t\t\t\t\t\tTitle:   \"Rollback Error\",\n\t\t\t\t\t\t\tMessage: err.Error(),\n\t\t\t\t\t\t\tIcon:    \"error\",\n\t\t\t\t\t\t\tActions: []Action{\n\t\t\t\t\t\t\t\t{Type: \"protocol\", Label: \"Open Explorer\", URI: fmt.Sprintf(\"file://%s\", filepath.ToSlash(filepath.Join(env.root)))},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfmt.Printf(\"rollback error: %v\\n\", err)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfmt.Println(\"Rollback complete.\")\n\t\t\t\t}\n\n\t\t\t\tif cpuarch == \"arm64\" && !web.IsNodeArm64bitAvailable(version) {\n\t\t\t\t\tstatus <- Status{Err: fmt.Errorf(\"Node.js v%s is only available in 32-bit and 64-bit.\", version)}\n\t\t\t\t}\n\n\t\t\t\tif !node.IsVersionInstalled(env.root, version, cpuarch) {\n\t\t\t\t\tif !node.IsVersionAvailable(version) {\n\t\t\t\t\t\turl := web.GetFullNodeUrl(\"index.json\")\n\t\t\t\t\t\tstatus <- Status{Err: fmt.Errorf(\"Version %s is not available.\\n\\nThe complete list of available versions can be found at %s\", version, url)}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\t// Wait for the prior subroutine to initialize before starting the next dependent thread\n\ttime.Sleep(300 * time.Millisecond)\n\n\tgo func() {","sourceCodeStart":538,"sourceCodeEnd":574,"githubUrl":"https://github.com/coreybutler/nvm-windows/blob/5b18223ca19ff50d707f35410dbc6bd440a9f74d/src/nvm.go#L538-L574","documentation":"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.","triggerScenarios":"`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).","commonSituations":"Windows-on-ARM (Surface Pro X, Snapdragon laptops) users trying older LTS lines; users assuming all versions have arm64 because `nvm arch` shows arm64.","solutions":["Pick a version with ARM64 builds — v20+ (ideally the newest release): `nvm install latest arm64`.","Fall back to emulated x64: `nvm install <version> 64` (x64 Node runs under Windows 11 ARM emulation).","Check nodejs.org download pages or the index.json URL for which versions carry win-arm64 artifacts."],"exampleFix":"# before\nnvm install 18.20.0 arm64\n# after\nnvm install 20.11.0 arm64","handlingStrategy":"validation","validationCode":"# bash: only request arm64 where it exists\nif [ \"$ARCH\" = arm64 ]; then\n  major=$(printf '%s' \"$V\" | sed -E 's/^v?([0-9]+).*/\\1/')\n  [ \"$major\" -ge 20 ] || { echo \"arm64 needs node >= 20; falling back to 64\"; ARCH=64; }\nfi\nnvm install \"$V\" \"$ARCH\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["On Windows-on-ARM, pin node v20 or later for native arm64.","Fall back to `64` for older versions (x64 emulation).","Check the win-arm64 entry in index.json before scripting arm64 installs."],"tags":["nvm-windows","arm64","version-availability","install"],"backgroundTag":null,"analyzedSha":"5b18223ca19ff50d707f35410dbc6bd440a9f74d","analyzedAt":"2026-08-15T10:06:51.428Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}