fix / pnpm v11 compatibility issues#634
Conversation
pnpm v11 blocks postinstall build scripts for native modules by default unless they are listed in allowBuilds with a boolean value. blockExoticSubdeps alone was not enough — pnpm install still failed with ERR_PNPM_IGNORED_BUILDS. Allow the native modules the gateway actually needs (bigint-buffer, secp256k1, keccak, etc.) so pnpm install completes on v11. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@rapcmia good catch — pushed Mind re-running |
|
Tested locally — confirmed both directions: Without (pnpm v11.1.2, Node 24) With the Build scripts ran for the native modules (e.g. Dockerfile path ( |
Node 20 reached end of life in April 2026, so the production Docker image was running on an unsupported runtime. Bump to Node 22 LTS (supported through April 2027) and update engines.node to match. With Node 22 in place, the pnpm@10 pin (added for Node 20 compatibility) is no longer needed — switch to pnpm@11 and make `pnpm install --frozen-lockfile` actually work on v11 by: - Migrating `resolutions` from package.json to `overrides:` in pnpm-workspace.yaml (yarn-style `resolutions` is not respected by pnpm v11, which caused ERR_PNPM_LOCKFILE_CONFIG_MISMATCH). - Copying pnpm-workspace.yaml into the Docker image alongside package.json and pnpm-lock.yaml so the overrides + allowBuilds config is present at install time. - Adding node_modules / dist / coverage / .git to .dockerignore so the build context is not 1GB of macOS-built artifacts that pnpm v11 then tries to purge non-interactively. Verified: `docker build` succeeds end-to-end, container runs on Node 22.22.3, bigint-buffer loads in the container, `pnpm v11 install --frozen-lockfile` finishes in ~150ms with no errors. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Pushed Changes in this commit:
Verified locally:
|
rapcmia
left a comment
There was a problem hiding this comment.
Commit b54af31
- Setup on
pnpm v11.1.2, node v24.14.1 - Run
pnpm clean (optional); pnpm install; pnpm build- Run
pnpm run setup:with-defaults(and with certs) - Run
pnpm start —passphrase=a( or —dev)
- Run
- Clone another PR and run
pnpm installonly, no error found ✅ - Successfully build local docker image ✅





Summary
pnpm@10for Node 20 compatibility (fixes Docker - CI build fails because pnpm@latest requires Node.js >=22.13 but image uses Node 20 #632)pnpm-workspace.yamlwithblockExoticSubdeps: false(fixes Installation - pnpm install fails with ERR_PNPM_EXOTIC_SUBDEP under pnpm v11 due to default exotic-subdependency blocking #633)Details
Issue #632 - Docker CI build fails
pnpm v11 requires Node.js >= 22.13, but the Docker image uses Node 20. The Dockerfile was using
pnpm@latestwhich now resolves to v11. Fixed by pinning topnpm@10.Issue #633 - pnpm install fails with ERR_PNPM_EXOTIC_SUBDEP
pnpm v11 blocks "exotic subdependencies" (git-hosted packages in transitive dependencies) by default. The dependency chain:
Fixed by adding
pnpm-workspace.yamlwithblockExoticSubdeps: false.Test plan
pnpm installworks with pnpm v11.x (requires Node 22+)pnpm installworks with pnpm v10.x (Node 20+)References
🤖 Generated with Claude Code