fix(bun): use native bun:sqlite during startup to avoid N-API crash (#11468)

Validated in a combined 4-PR batch worktree off release/v3.8.51 tip (Bun-native SQLite infrastructure cluster from the same contributor).
- Focused test: bunSqliteAdapter.test.ts — part of batch's 5/5 node:test run
- typecheck:core, file-size, changelog-integrity, complexity, cognitive-complexity — all OK
- Full-repo lint: 228 pre-existing dashboard react-hooks/* findings, unrelated to this diff

Thanks for tracing this to the pre-boot better-sqlite3 require — a native NAPI abort that JS try/catch cannot recover from is exactly the kind of failure mode that needs the guard moved earlier, and aligning bootstrap/sync-env with the already-preferred bun:sqlite driver is the right fix.
This commit is contained in:
Nguyễn Viết Tuấn
2026-08-26 06:31:34 +07:00
committed by GitHub
parent 3f6a881b6c
commit 9ad90fe7a3
5 changed files with 77 additions and 1 deletions

View File

@@ -26,6 +26,17 @@ let resolvedCached = null;
export async function loadSqliteRuntime() {
if (resolvedCached) return resolvedCached;
if (process.versions.bun) {
try {
const bunSqlite = await import("bun:sqlite");
resolvedCached = {
driver: { kind: "bun-sqlite", Database: bunSqlite.Database },
source: "bun-sqlite",
};
return resolvedCached;
} catch {}
}
const bundled = await tryLoadBundled();
if (bundled) {
resolvedCached = { driver: bundled, source: "bundled" };