jackwener/OpenCLI · info · EmptyResultError
No IndexedDB databases.
Error message
No IndexedDB databases.
What it means
EmptyResultError from the trae-solo `idb-list` command when `indexedDB.databases()` returns an empty or non-array result in the Trae renderer, meaning no IndexedDB databases exist in that origin/session. The library throws rather than printing an empty table so callers know there is nothing to inspect.
Source
Thrown at clis/trae-solo/renderer-storage.js:158
}));
},
});
// -------- idb-list --------
cli({
site: 'trae-solo',
name: 'idb-list',
access: 'read',
description: 'List IndexedDB databases on the Trae SOLO renderer. Trae ships an @byted/ve-rtc DB used by the Volcengine RTC voice/video infrastructure.',
domain: 'localhost',
strategy: Strategy.UI,
browser: true,
args: [],
columns: ['Index', 'Key', 'Bytes', 'Name', 'Preview', 'Database', 'Version'],
func: async (page) => {
const dbs = await page.evaluate(`(async () => indexedDB.databases ? await indexedDB.databases() : [])()`);
if (!Array.isArray(dbs) || !dbs.length) {
throw new EmptyResultError('trae-solo idb-list', 'No IndexedDB databases.');
}
return dbs.map((d, i) => ({
Index: i + 1,
Key: '',
Bytes: '',
Name: '',
Preview: '',
Database: d.name || '(unnamed)',
Version: String(d.version || ''),
}));
},
});
View on GitHub (pinned to 49907e53dc)
Solutions
- Confirm the data you seek is actually in IndexedDB — check Trae's on-disk state (e.g. workspace storage) instead.
- Navigate/trigger the feature that creates the IDB store, then re-run.
- Verify you are attached to the correct page/origin in the Trae window.
- If databases() is unsupported in the Electron Chromium version, enumerate via known names with indexedDB.open() probes.
Example fix
// before
const dbs = await cli('trae-solo', 'idb-list'); // EmptyResultError
// after
const keys = await cli('trae-solo', 'storage-keys', {}); // check localStorage first
console.log(keys); Defensive patterns
Strategy: fallback
Type guard
const isDbList = (v) => Array.isArray(v) && v.every(d => typeof d?.name === 'string');
Try / catch
try {
dbs = await cli('trae-solo', 'idb-list');
} catch (e) {
if (/No IndexedDB databases/.test(e.message)) {
console.warn('No IDB at this origin — inspecting localStorage instead');
fallback = await cli('trae-solo', 'storage-keys', {});
} else throw e;
} Prevention
- Verify the app actually persists data in IndexedDB before probing (check disk profile or docs).
- Trigger the feature that creates the IDB store before listing.
- Ensure you are attached to the correct renderer page/origin.
- Have a localStorage/file-storage inspection fallback for Electron apps.
When it happens
Trigger: Inspecting a Trae page that never used IndexedDB (state kept in localStorage or files instead); databases() unsupported and returning [] via the fallback; browsing before any feature that creates an IDB store has run.
Common situations: Assuming an Electron app persists state in IndexedDB when it uses SQLite/JSON files; checking a fresh profile or a page whose origin has no IDB usage; probing the wrong renderer page.
Related errors
- antigravity idb-list: No IndexedDB databases.
- No IndexedDB databases.
- No keys match "${flt}".
- document.cookie is empty (Trae uses Electron session cookies
- No prices returned for train_no=${trainNo} ${fromStation.nam
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/d6ef69dc72702d85.
Report an issue: GitHub.