{"record":{"id":"28bf2ac578b1947a","repo":"jdx/mise","slug":"precompiled-node-archive-not-found-and-locked-mode","errorCode":null,"errorMessage":"precompiled node archive not found and locked mode requires the locked precompiled artifact","messagePattern":"precompiled node archive not found and locked mode requires the locked precompiled artifact","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/core/node.rs","lineNumber":138,"sourceCode":"                        strip_components: 1,\n                        pr: Some(ctx.pr.as_ref()),\n                        ..Default::default()\n                    },\n                )?;\n                Ok(())\n            })\n            .await?\n        {\n            FetchOutcome::Downloaded => {\n                warn_patches_not_applied();\n                Ok(())\n            }\n            FetchOutcome::NotFound => {\n                if ctx.locked {\n                    if let Some(message) = node_flavor_not_found_message(opts) {\n                        bail!(\"{message}\\nlocked mode requires the locked precompiled artifact\")\n                    }\n                    bail!(\n                        \"precompiled node archive not found and locked mode requires the locked precompiled artifact\"\n                    )\n                } else if Settings::get().node_compile(CompilePurpose::Inspect) != Some(false) {\n                    if let Some(message) = node_flavor_not_found_message(opts) {\n                        warn!(\"{message}\");\n                    }\n                    self.install_compiling(ctx, tv, opts).await\n                } else {\n                    if let Some(message) = node_flavor_not_found_message(opts) {\n                        bail!(\"{message}\\ncompilation is disabled\")\n                    }\n                    bail!(\"precompiled node archive not found and compilation is disabled\")\n                }\n            }\n        }\n    }\n\n    async fn install_windows(","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/plugins/core/node.rs#L120-L156","documentation":"In locked mode, a missing precompiled node archive cannot fall back to compilation, so install_precompiled fails with this explicit message naming both the missing archive and the locked-mode constraint.","triggerScenarios":"FetchOutcome::NotFound for the node precompiled archive while ctx.locked is true and no flavor-specific message applies — the exact version/platform archive is not published.","commonSituations":"Node versions removed from nodejs.org dist, platforms without official builds, or a mise.lock pinned to an artifact that no longer exists.","solutions":["Run `mise lock` to re-resolve the locked artifact","Pick a Node version that still has published precompiled builds for your platform","Temporarily leave locked mode so mise can compile from source"],"exampleFix":"# before\nmise install node@18.0.0  # artifact yanked upstream\n\n# after\nmise lock\nmise install node@18.18.0","handlingStrategy":"retry","validationCode":"curl -sfIL \"https://nodejs.org/dist/v20.0.0/node-v20.0.0-$(uname -s | tr A-Z a-z)-$(uname -m).tar.gz\"","typeGuard":null,"tryCatchPattern":"mise install node@X || { mise lock && mise install node@X; }","preventionTips":["Check nodejs.org/dist for the exact version artifact before pinning","Avoid pinning Node versions that may be yanked","Re-run `mise lock` when installs fail in locked mode"],"tags":["node","locked-mode","precompiled","archive"],"backgroundTag":"resource-not-found","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}