diegosouzapw/OmniRoute · error
[MCP Audit] better-sqlite3 binding unavailable — fell back t
Error message
[MCP Audit] better-sqlite3 binding unavailable — fell back to node:sqlite (${nativeMessage.split("\n")[0]}) What it means
Error "[MCP Audit] better-sqlite3 binding unavailable — fell back to node:sqlite (${nativeMessage.split("\n")[0]})" thrown in diegosouzapw/OmniRoute.
Source
Thrown at open-sse/mcp-server/audit.ts:259
const { DatabaseSync } = (await import("node:sqlite")) as {
DatabaseSync: new (p: string) => NodeSqliteDatabase;
};
return createNodeSqliteAuditAdapter(new DatabaseSync(dbPath));
}
async function openFallbackAuditDb(dbPath: string, nativeMessage: string): Promise<AuditDatabase | null> {
if (!nodeSqliteFallbackAvailable()) {
console.error(
`[MCP Audit] better-sqlite3 native binding unavailable and Node ${process.version} ` +
"has no built-in sqlite. Audit logging disabled. Fix: run " +
"`npm rebuild better-sqlite3` in the omniroute install root."
);
return null;
}
try {
const adapter = await openNodeSqliteAuditDb(dbPath);
console.warn(
`[MCP Audit] better-sqlite3 binding unavailable — fell back to node:sqlite ` +
`(${nativeMessage.split("\n")[0]})`
);
return adapter;
} catch (nodeErr) {
const nodeMessage = nodeErr instanceof Error ? nodeErr.message : String(nodeErr);
console.error("[MCP Audit] Failed to connect to database:", nodeMessage);
return null;
}
}
/**
* Lazy-load the database connection.
* Uses the same SQLite database as the main OmniRoute app.
*
* Driver priority:
* 1. better-sqlite3 — fast native binding (when its compiled `.node`
* binary is present, see scripts/build/postinstall.mjs).View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at open-sse/mcp-server/audit.ts:259 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/2cf6282d94eef97a.
Report an issue: GitHub.