{"record":{"id":"d4ea5693ba14dea9","repo":"Mintplex-Labs/anything-llm","slug":"no-browser-pages-open","errorCode":null,"errorMessage":"No browser pages open.","messagePattern":"No browser pages open\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"open-computer/services/interface-service/utils/cdp-eval.js","lineNumber":85,"sourceCode":"async function main() {\n  const versionRaw = await httpGet(\"http://127.0.0.1:9222/json/version\");\n  const version = JSON.parse(versionRaw);\n  const browserWsUrl = version.webSocketDebuggerUrl;\n  if (!browserWsUrl) throw new Error(\"No webSocketDebuggerUrl — is Chromium running?\");\n\n  const ws = await new Promise((resolve, reject) => {\n    const socket = new WebSocket(browserWsUrl);\n    const t = setTimeout(() => reject(new Error(\"WS connect timeout\")), 5000);\n    socket.on(\"open\", () => { clearTimeout(t); resolve(socket); });\n    socket.on(\"error\", (err) => { clearTimeout(t); reject(err); });\n  });\n\n  try {\n    const { targetInfos } = await cdpSend(ws, \"Target.getTargets\");\n    const pages = targetInfos.filter(\n      (t) => t.type === \"page\" && !t.url.startsWith(\"chrome://\") && !t.url.startsWith(\"devtools://\")\n    );\n    if (pages.length === 0) throw new Error(\"No browser pages open.\");\n\n    let target = pages[pages.length - 1];\n    if (targetUrl) {\n      const match = pages.find(\n        (p) => p.url.includes(targetUrl) || p.title.toLowerCase().includes(targetUrl.toLowerCase())\n      );\n      if (!match) {\n        const openTabs = pages.map((p) => `- ${p.title} ${p.url}`).join(\"\\n\");\n        throw new Error(`No browser tab matching \"${targetUrl}\". Open tabs:\\n${openTabs}`);\n      }\n      if (match) target = match;\n    }\n\n    const { sessionId } = await cdpSend(ws, \"Target.attachToTarget\", {\n      targetId: target.targetId,\n      flatten: true,\n    });\n","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/open-computer/services/interface-service/utils/cdp-eval.js#L67-L103","documentation":"Thrown by cdp-eval.js after Target.getTargets returns zero pages (all targets are chrome://, devtools://, or non-page types). The browser is up and CDP works, but there is no evaluatable page to inject the expression into.","triggerScenarios":"Chromium was launched with no startup URL and only shows the new-tab page filtered out, all tabs were closed leaving only devtools windows, or the browser is headless with no about:blank page.","commonSituations":"Headless Chrome started without a URL arg; user closed every tab manually; only chrome://settings and devtools windows remain; the launcher opened DevTools-for-DevTools but no content page.","solutions":["Open at least one http/https/content page in Chromium before invoking cdp-eval.","Launch Chromium with `--app=http://localhost` or similar so a content page exists.","For headless mode, pass a startup URL so a page target is created."],"exampleFix":"# before — no content page\nchromium-browser --remote-debugging-port=9222\n\n# after — startup URL creates a page target\nchromium-browser --remote-debugging-port=9222 about:blank","handlingStrategy":"validation","validationCode":"// Confirm at least one content page exists before evaluating.\nasync function hasOpenPage() {\n  const tabs = JSON.parse(await httpGet('http://127.0.0.1:9222/json'));\n  return Array.isArray(tabs) && tabs.some(t => t.type === 'page' && !t.url.startsWith('chrome://'));\n}","typeGuard":null,"tryCatchPattern":"if (!await hasOpenPage()) {\n  console.error('Open at least one content page in Chromium.');\n  process.exit(2);\n}","preventionTips":["Launch Chromium with a startup URL (about:blank or the app URL) so a page target exists.","Avoid closing every tab before invoking cdp-eval.","In headless mode, pass --app=<url> to create an initial page."],"tags":["cdp","chromium","browser-debugging","tabs","setup"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}