Эх сурвалжийг харах

fix: use createRequire for ESM-compatible node:sqlite loading

require() is not available in ESM modules. Use createRequire from
node:module to get a CJS-compatible require function. This fixes
memory.db creation on Node 22+ where node:sqlite is available.
Ma 7 сар өмнө
parent
commit
2e3722059e

+ 4 - 2
packages/core/src/state/memory-db.ts

@@ -9,8 +9,11 @@
  * persistence layer. MemoryDB is an acceleration index built alongside them.
  */
 
+import { createRequire } from "node:module";
 import { join } from "node:path";
 
+const require = createRequire(import.meta.url);
+
 const FACT_SELECT_COLUMNS = `
   id,
   subject,
@@ -57,8 +60,7 @@ export class MemoryDB {
   private db: any;
 
   constructor(bookDir: string) {
-    // Dynamic import to avoid crashing on Node 20 (node:sqlite requires Node 22+)
-    // eslint-disable-next-line @typescript-eslint/no-require-imports
+    // node:sqlite requires Node 22+; require() via createRequire for ESM compat
     const { DatabaseSync } = require("node:sqlite");
     const dbPath = join(bookDir, "story", "memory.db");
     this.db = new DatabaseSync(dbPath);