nodejs/node · error · Error
No dependencies found matching ${args.join(', ')}
Error message
No dependencies found matching ${args.join(', ')} What it means
`npm explain <spec>...` collects tree nodes matching each argument, applying any --workspace filter. If the resulting node set is empty (no arg matched anything, or all matches were filtered out) it throws naming the requested args.
Source
Thrown at deps/npm/lib/commands/explain.js:56
this.filterSet = arb.workspaceDependencySet(tree, this.workspaceNames)
} else if (!this.npm.flatOptions.workspacesEnabled) {
this.filterSet =
arb.excludeWorkspacesDependencySet(tree)
}
const nodes = new Set()
for (const arg of args) {
for (const node of this.getNodes(tree, arg)) {
const filteredOut = this.filterSet
&& this.filterSet.size > 0
&& !this.filterSet.has(node)
if (!filteredOut) {
nodes.add(node)
}
}
}
if (nodes.size === 0) {
throw new Error(`No dependencies found matching ${args.join(', ')}`)
}
const expls = []
for (const node of nodes) {
const { extraneous, dev, optional, devOptional, peer, inBundle, overridden } = node
const expl = node.explain()
if (extraneous) {
expl.extraneous = true
} else {
expl.dev = dev
expl.optional = optional
expl.devOptional = devOptional
expl.peer = peer
expl.bundled = inBundle
expl.overridden = overridden
}
expls.push(expl)
}View on GitHub (pinned to 1b2de5e052)
Solutions
- Confirm the dependency is installed: `npm ls <pkg>`
- Correct the spec or package name spelling
- Drop or widen the --workspace filter if it is excluding the matching node
- Run `npm install` first if the tree is incomplete
Defensive patterns
Strategy: validation
Validate before calling
async function depExplainable(arborist, args, filterSet) {
const tree = await arborist.loadActual()
let matched = 0
for (const arg of args) for (const node of getNodes(tree, arg)) {
if (!filterSet || filterSet.size === 0 || filterSet.has(node)) matched++
}
return matched > 0
} Type guard
function anyNodeMatches(nodes) { return nodes.size > 0 } Try / catch
try {
await runNpm('explain', args)
} catch (e) {
if (/No dependencies found/.test(e.message)) { await runNpm('ls') /* inspect tree */ }
else throw e
} Prevention
- Run `npm ls <pkg>` to confirm presence before `npm explain`
- Run explain from the project root that contains node_modules
- Drop or widen --workspace filters that may exclude the target node
When it happens
Trigger: Running `npm explain <pkg>` where <pkg> is not installed in the current tree; a typo; a dep present only under a workspace excluded by your --workspace filter.
Common situations: Querying a transitive dep that was deduped/removed; wrong package name; running explain from the wrong directory (no node_modules).
Related errors
- Cannot use --no-workspaces and --workspace at the same time
- Please provide only one of ${flagList}
- Unknown positional argument: ${extra}
- ${argv[2]} not recognized
- As of npm@5, the npm cache self-heals from corruption issues
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/8eef14d9a60dd290.
Report an issue: GitHub.