Skip to content

SQLite providers silently fail: eval("require") is undefined in ESM context #98

@borgudd

Description

@borgudd

Bug

codeburn status shows zero data for SQLite-based providers (OpenCode, Cursor) even when data exists.

Root Cause

dist/cli.js has "type": "module" in package.json, so Node runs it as ESM. But loadDriver() in src/sqlite.ts uses:

const mod = eval("require")("node:sqlite");

In ESM, require is not defined, so this throws ReferenceError: require is not defined. The error is silently caught, loadDriver() returns false, and all SQLite-based providers (OpenCode, Cursor) are skipped with no output.

Fix

Replace eval("require") with createRequire:

import { createRequire } from "module";
const require = createRequire(import.meta.url);
// ...
const mod = require("node:sqlite");

Environment

  • codeburn v0.7.3
  • Node v25.8.0
  • macOS (arm64)
  • OpenCode with data in ~/.local/share/opencode/opencode.db (17k+ messages)

Workaround

Patch dist/cli.js manually: add import { createRequire } from "module"; var __require = createRequire(import.meta.url); after the shebang, and replace eval("require") with __require.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions