{"record":{"id":"f11dc7945295dd44","repo":"denoland/deno","slug":"node-was-not-found","errorCode":null,"errorMessage":"Node {} was not found!","messagePattern":"Node (.+?) was not found!","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/doc.rs","lineNumber":707,"sourceCode":"      no_of_files, html_options.output\n    ))\n  );\n  Ok(())\n}\n\nfn print_docs_to_stdout(\n  doc_flags: DocFlags,\n  mut documents_by_url: ParseOutput,\n) -> Result<(), AnyError> {\n  if let Some(filter) = doc_flags.filter {\n    for (_, doc) in &mut documents_by_url {\n      let symbols = std::mem::take(&mut doc.symbols);\n      doc.symbols = doc::find_nodes_by_name_recursively(symbols, &filter)\n        .into_iter()\n        .map(Arc::new)\n        .collect();\n      if doc.symbols.is_empty() {\n        bail!(\"Node {} was not found!\", filter);\n      }\n    }\n  }\n\n  let details = format!(\n    \"{}\",\n    doc::DocPrinter::new(\n      &documents_by_url,\n      colors::use_color(),\n      doc_flags.private\n    )\n  );\n\n  deno_print::drop_write_stdout(details.as_bytes());\n  Ok(())\n}\n\nfn check_diagnostics(diagnostics: &[DocDiagnostic]) -> Result<(), AnyError> {","sourceCodeStart":689,"sourceCodeEnd":725,"githubUrl":"https://github.com/denoland/deno/blob/f7822238cab635a3a19f99f493f675fa81a7f9d8/cli/tools/doc.rs#L689-L725","documentation":"`deno doc` with a name filter applies find_nodes_by_name_recursively to every parsed document and bails as soon as any single document ends up with zero matching symbols. So the filter must match at least one documented symbol in *each* module in the doc set — matching in one file is not enough.","triggerScenarios":"`deno doc --filter <Name> <files...>` where <Name> exists in one entry module but not in another parsed module; a typo or wrong case in the filter; or filtering for a symbol that isn't exported/documented in every input file.","commonSituations":"Filtering for a class only defined in one module while deno doc parses many entry points; filtering for private/internal symbols; renaming a symbol but not the CI command that uses the old filter.","solutions":["Run `deno doc` without the filter and locate the exact symbol name in the output.","Narrow the doc set to the entry file(s) that actually contain the symbol instead of documenting everything.","Check the filter's spelling and case against the declared name."],"exampleFix":"# before: filter must match in EVERY parsed module\ndeno doc --filter MyComponent src/\n\n# after: scope to the module that defines it\ndeno doc --filter MyComponent src/components/mod.ts","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"# CI pattern: fall back to unfiltered docs if the filter misses\nif ! deno doc --filter \"$SYMBOL\" src/mod.ts; then\n  echo \"filter '$SYMBOL' matched nothing in some module — dumping symbol list\" >&2\n  deno doc --name \"$SYMBOL\" src/ || true\n  exit 1\nfi","preventionTips":["Scope `deno doc --filter` invocations to the specific entry module that defines the symbol.","In scripts, run unfiltered docs first and grep when unsure the symbol is in every parsed file.","Update filter strings when renaming exported symbols."],"tags":["deno-doc","cli","symbol-filter","documentation"],"backgroundTag":"symbol-not-found","analyzedSha":"f7822238cab635a3a19f99f493f675fa81a7f9d8","analyzedAt":"2026-08-20T13:07:44.778Z","contentChangedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}