jdx/mise · error
precompiled node archive not found and compilation is…
Error message
precompiled node archive not found and compilation is disabled
What it means
The core node plugin tries to download a prebuilt node distribution; when the archive for the requested version/flavor/platform is not available (FetchOutcome::NotFound) it would normally fall back to compiling node from source. This error is raised when that fallback is explicitly blocked because node compilation is disabled (`node.compile=false` or the setting resolves to false). mise throws it because neither prebuilt-download nor source-compilation can satisfy the install request.
Solutions
- Remove the `node.compile=false` setting (or set it true) so mise can build node from source: `mise settings set node.compile true`
- Install a node version that has an official prebuilt binary for your platform (e.g. `mise use node@22`)
- Check your node mirror/flavor configuration points at a repository that actually hosts the requested archive
Example fix
// before (mise.toml / settings) [node] compile = false version = "19.0.0" // no prebuilt for this platform // after [node] version = "22.14.0" // prebuilt exists; compile left unset
Defensive patterns
Strategy: validation
Validate before calling
// verify a prebuilt node exists before installing, with compile disabled
const ver = "22.14.0";
const res = await fetch(`https://nodejs.org/dist/v${ver}/`);
if (!res.ok) throw new Error(`no prebuilt node ${ver}; set node.compile=true or pick another version`); Try / catch
try {
await $`mise install node@${ver}`;
} catch (e) {
if (String(e).includes("compilation is disabled")) {
await $`mise settings set node.compile true`;
await $`mise install node@${ver}`;
} else throw e;
} Prevention
- Keep node.compile unset (or true) unless you specifically need downloads only
- Before pinning a version, check https://nodejs.org/dist for a matching tarball for your OS/arch
- Avoid unofficial node flavors unless their archives are confirmed to exist
When it happens
Trigger: Running `mise install node@<version>` where nodejs.org (or a configured mirror/flavor URL) has no matching tarball for the platform/flavor, while `Settings::node_compile` returns Some(false) so install_compiling is skipped. Also raised when a custom node flavor is missing and compilation is disabled.
Common situations: Pinning an exotic node version that has no prebuilt binary for your OS/arch; setting `node.compile = false` in settings to speed up installs; using a partial mirror that lacks some archives; requesting an unofficial flavor (e.g. skypack/graalvm builds) not published upstream.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- \ncompilation is disabled
- compilation is disabled
- locked mode requires the locked precompiled artifact
- no precompiled python found for
- no precompiled ruby found for
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/34231da51e7e53bb.
Report an issue: GitHub.
Appendix: source
Thrown at src/plugins/core/node.rs:150
}
FetchOutcome::NotFound => {
if ctx.locked {
if let Some(message) = node_flavor_not_found_message(opts) {
bail!("{message}\nlocked mode requires the locked precompiled artifact")
}
bail!(
"precompiled node archive not found and locked mode requires the locked precompiled artifact"
)
} else if Settings::get().node_compile(CompilePurpose::Inspect) != Some(false) {
if let Some(message) = node_flavor_not_found_message(opts) {
warn!("{message}");
}
self.install_compiling(ctx, tv, opts).await
} else {
if let Some(message) = node_flavor_not_found_message(opts) {
bail!("{message}\ncompilation is disabled")
}
bail!("precompiled node archive not found and compilation is disabled")
}
}
}
}
async fn install_windows(
&self,
ctx: &InstallContext,
tv: &mut ToolVersion,
opts: &BuildOpts,
) -> Result<()> {
match self
.fetch_binary(ctx, tv, opts, || self.extract_zip(opts, ctx))
.await?
{
FetchOutcome::Downloaded => {
warn_patches_not_applied();
Ok(())View on GitHub (pinned to 533346cc37)