{"record":{"id":"d5644f22ecd853f5","repo":"jdx/mise","slug":"npm-is-locked-with-an-embedded-aube-dependency-graph-but-npm","errorCode":null,"errorMessage":"npm:{} is locked with an embedded-aube dependency graph, but npm.package_manager is set to {}; use the embedded aube package manager or refresh the lockfile","messagePattern":"npm:(.+?) is locked with an embedded-aube dependency graph, but npm\\.package_manager is set to (.+?); use the embedded aube package manager or refresh the lockfile","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/npm.rs","lineNumber":532,"sourceCode":"        let package_manager = self\n            .package_manager_for_install(&ctx.config, Some(&ctx.ts))\n            .await;\n        if package_manager == NpmPackageManager::Aube\n            && tv.aube_lock.is_none()\n            && let Some(version) = tv\n                .aube_install_path_version()\n                .or_else(|| tv.legacy_aube_install_path_version())\n                .map(str::to_string)\n        {\n            tv.version = version;\n        }\n        let source_lockfile_version = if tv.resolved_from_lockfile() {\n            crate::lockfile::version_for_request(&ctx.config, &tv.request)?\n        } else {\n            None\n        };\n        if tv.aube_lock.is_some() && package_manager != NpmPackageManager::Aube {\n            eyre::bail!(\n                \"npm:{} is locked with an embedded-aube dependency graph, but npm.package_manager is set to {}; use the embedded aube package manager or refresh the lockfile\",\n                self.tool_name(),\n                package_manager\n            );\n        }\n        if package_manager == NpmPackageManager::Aube\n            && tv.resolved_from_lockfile()\n            && tv.aube_lock.is_none()\n            && ctx.locked\n            && source_lockfile_version.is_some_and(|v| v >= 2)\n        {\n            eyre::bail!(\n                \"npm:{} has no embedded-aube dependency graph in the revision 2 lockfile; run `mise lock` to repair it or disable locked mode\",\n                self.tool_name()\n            );\n        }\n        if package_manager == NpmPackageManager::Aube\n            && tv.aube_lock.is_none()","sourceCodeStart":514,"sourceCodeEnd":550,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/backend/npm.rs#L514-L550","documentation":"In npm's prepare_install_version, mise checks consistency between the lockfile's embedded-aube dependency graph and the configured npm.package_manager. If the lockfile contains an aube lock (revision-2 style dependency graph) but package_manager is npm/yarn/pnpm (not the embedded aube), mise bails because the lockfile can only be honored by the embedded aube manager.","triggerScenarios":"mise.lock was generated with npm.package_manager = \"aube\" (default, embedding a dependency graph), then a user sets `npm.package_manager = \"npm\"` (or yarn/pnpm) in settings and runs `mise install --locked` / locked install of an npm:{} tool with aube_lock present.","commonSituations":"A teammate commits a lockfile generated with default settings; another contributor has `npm.package_manager = \"npm\"` set globally or in mise.toml and tries a locked install.","solutions":["Switch back to the embedded aube package manager: remove the `npm.package_manager` override or set it to \"aube\".","Run `mise lock` with package_manager = \"aube\" to refresh the lockfile, or regenerate the lockfile under your current package manager so it no longer embeds an aube graph.","Install unlocked (`mise install` without --locked) if you don't need lockfile enforcement, then re-lock."],"exampleFix":"// before (mise.toml)\n[settings]\nnpm.package_manager = \"npm\"\n\n// after\n[settings]\nnpm.package_manager = \"aube\"","handlingStrategy":"validation","validationCode":"# before locked install, ensure package_manager matches the lockfile's graph\nmise settings get npm.package_manager  # must be \"aube\" if mise.lock embeds an aube graph","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Standardize npm.package_manager across the team (commit it in mise.toml [settings])","Regenerate mise.lock after changing package_manager","Don't mix package_manager settings between global config and project config"],"tags":["npm","lockfile","package-manager","aube"],"backgroundTag":"conflicting-config-options","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"}