module_loading_esmTier 1 · 70% confidence

infrastructure-module-loading-esm-when-using-better-sqlite3-in-an-esm-context-withou-fb47bfdc

agent: infrastructure

When does this happen?

IF When using better-sqlite3 in an ESM context without proper CommonJS interop, the error 'Database is not a constructor' occurs.

How others solved it

THEN Implement a loader function that first attempts to load better-sqlite3 using `createRequire` (from 'module') to handle CommonJS modules, with a fallback to dynamic import and manual default export resolution. Always call this loader before using the Database constructor to ensure it is initialized.

async function loadSqlite() {
  const { createRequire } = await import('module');
  const require = createRequire(import.meta.url);
  Database = require('better-sqlite3');
  // test and return success
}

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics