jdx/mise · error

precompiled node archive not found and locked mode requires…

Error message

precompiled node archive not found and locked mode requires the locked precompiled artifact

What it means

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.

Solutions

  1. Run `mise lock` to re-resolve the locked artifact
  2. Pick a Node version that still has published precompiled builds for your platform
  3. Temporarily leave locked mode so mise can compile from source

Example fix

# before
mise install node@18.0.0  # artifact yanked upstream

# after
mise lock
mise install node@18.18.0
Defensive patterns

Strategy: retry

Validate before calling

curl -sfIL "https://nodejs.org/dist/v20.0.0/node-v20.0.0-$(uname -s | tr A-Z a-z)-$(uname -m).tar.gz"

Try / catch

mise install node@X || { mise lock && mise install node@X; }

Prevention

When it happens

Trigger: 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.

Common situations: Node versions removed from nodejs.org dist, platforms without official builds, or a mise.lock pinned to an artifact that no longer exists.

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


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/28bf2ac578b1947a. Report an issue: GitHub.

Appendix: source

Thrown at src/plugins/core/node.rs:138

                        strip_components: 1,
                        pr: Some(ctx.pr.as_ref()),
                        ..Default::default()
                    },
                )?;
                Ok(())
            })
            .await?
        {
            FetchOutcome::Downloaded => {
                warn_patches_not_applied();
                Ok(())
            }
            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(

View on GitHub (pinned to 533346cc37)