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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions