Skip to content

engines admits Node versions the pinned pnpm@11 cannot run on (node:sqlite), so an engines-compliant checkout dies before install #240

Description

@ophiocus

Summary

package.json declares "engines": { "node": ">=22" } and pins "packageManager": "pnpm@11.20.0" — but pnpm 11 hard-requires the node:sqlite builtin, which is flag-gated until late in the Node 22/23 lines. The engines range therefore admits a band of Node versions on which the pinned package manager cannot start at all, and the contributor sees a pnpm stack trace rather than anything naming the real constraint. Windows contributors, who tend to sit on nvm-windows-installed even-numbered releases, walk straight into it.

Adjacent to #167 (corepack missing on Node 25+ breaks the documented quickstart) but a different clause: #167 is about how pnpm gets installed; this is about engines promising Node versions the pinned pnpm cannot run on.

Observed ladder (Windows 11, nvm-windows, clean checkout of main)

Every rung verbatim, same repo, same day:

  1. Node 20.18.0corepack pnpm via a stale shim: ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING (corepack relic; Quickstart fails on Node 25+: corepack is no longer bundled, so corepack enable and pnpm dev cannot run #167 territory).
  2. Node 20.18.0npm i -g pnpm@11 && pnpm install: ERR_UNKNOWN_BUILTIN_MODULE from pnpm's own bundle (no node:sqlite in 20.x). Engines says >=22, fair — but the error names nothing actionable.
  3. Node 23.3.0 (satisfies >=22) — npx pnpm@11 install: ERR_UNKNOWN_BUILTIN_MODULE: No such built-in module: node:sqlite at ../store/index/lib/index.js. Engines-compliant Node, pinned pnpm, cold stop.
  4. Node 22.23.2 (WSL, same machine): everything works — which is the point: the working floor is a late 22.x, not ">=22".

Why it matters

The method doc's own thesis is that agents (and people) hedge when "the environment can't run anything." A first-touch contributor on an engines-compliant Node gets a pnpm internals stack trace before reaching pnpm install's first byte of output. Nothing in README, CONTRIBUTING, or the error path names node:sqlite or the real minimum.

Suggested fix (small)

Happy to send the PR for whichever shape you prefer — it pairs naturally with the #167 quickstart correction.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions