Skip to content

npm install fails on Node 26 — better-sqlite3 11.x can't compile against current V8 #4

Description

@SuspiciousStank

Installing from source on macOS (arm64, Node 26.7.0) fails at
better-sqlite3@11.10.0. There is no prebuilt binary for this ABI, so it falls
back to node-gyp rebuild, and the compile fails on V8 API removals:

prebuild-install warn install No prebuilt binaries found
  (target=26.7.0 runtime=node arch=arm64 libc= platform=darwin)

./src/util/binder.lzz:40:37: error: no member named 'GetPrototype' in 'v8::Object'
./src/better_sqlite3.lzz:68:34: error: no member named 'GetIsolate' in 'v8::Context'
./src/objects/database.lzz:416:89: error: no member named 'This' in
                                   'v8::PropertyCallbackInfo<v8::Value>'
gyp ERR! stack Error: `make` failed with exit code: 2

v8::Object::GetPrototype(), v8::Context::GetIsolate() and
PropertyCallbackInfo::This() have all been removed, so 11.x cannot build on
Node 26 at all.

The knock-on is confusing: the install failure means devDependencies never land
either, so the next thing you see is sh: tsc: command not found from
npm run build, which looks like a separate problem.

Fix

server/package.json currently pins:

"better-sqlite3": "^11.7.0"

^11 can't reach a compatible release. Bumping to ^13.0.0 resolves it —
13.0.3 installs and runs clean here (its engines is node: >=22):

better-sqlite3 OK -> { a: 42 }
version: 13.0.3

Worth verifying on Node 22/24 before taking it, since I've only tested 26.

One note in case it bites someone else: npm 11 now blocks lifecycle scripts by
default, so a native module can appear to install and then fail at runtime.
Worth a require('better-sqlite3') smoke check rather than trusting a clean
npm install.

Reporting note

Not a developer — Claude (Anthropic's coding agent) diagnosed this in my
checkout while helping me get the portal running without Docker. I've confirmed
the bumped version builds and the portal works; I can't vouch for the change
beyond that.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions