jdx/mise · error

Provider ' ' not found. Available providers

Error message

Provider '{provider_id}' not found.

Available providers:
{available}

What it means

`explain_provider` looks up the requested provider id in the dependency engine. If `engine` has no provider with that id, it bails with the offending id plus a formatted list of all available provider ids so the user can correct the name.

Solutions

  1. Read the 'Available providers' list in the error and retry with an exact id.
  2. Run `mise deps install --list` to enumerate provider ids.
  3. Check whether the provider requires a mise setting or feature to be enabled.

Example fix

// before
$ mise deps install nodejs --explain  // Provider 'nodejs' not found
// after
$ mise deps install npm --explain
Defensive patterns

Strategy: validation

Validate before calling

mise deps install --list | grep -qx "  $provider" || echo "unknown provider: $provider"

Prevention

When it happens

Trigger: Run `mise deps install <provider> --explain` where `list_providers()` contains no provider whose id equals the given `provider_id` (lookup returns None).

Common situations: Typo'd provider id (npm vs node, etc.); provider not enabled in this build/feature set; stale docs referencing a removed provider; running with `--list` skipped so available ids were never checked.

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/6572a2c0e6ece158. Report an issue: GitHub.

Appendix: source

Thrown at src/cli/deps/install.rs:182

            info!("All dependencies are up to date");
        }

        Ok(())
    }

    fn explain_provider(
        engine: &DepsEngine,
        provider_id: &str,
        effective_env: &std::collections::BTreeMap<String, String>,
    ) -> Result<()> {
        let Some(provider) = engine.find_provider(provider_id) else {
            let available = engine
                .list_providers()
                .iter()
                .map(|p| format!("  {}", p.id()))
                .collect::<Vec<_>>()
                .join("\n");
            bail!("Provider '{provider_id}' not found.\n\nAvailable providers:\n{available}");
        };

        let applicability = provider.applicability();

        // Header
        miseprintln!("Provider: {}", provider.id());
        miseprintln!("Auto: {}", if provider.is_auto() { "yes" } else { "no" });

        // Sources
        let sources = provider.sources();
        miseprintln!("Sources:");
        for source in &sources {
            let exists = source.exists();
            let marker = if exists { "+" } else { "-" };
            miseprintln!("  {} {}", marker, source.display());
        }

        // Outputs

View on GitHub (pinned to 533346cc37)