Corepack + pnpm 12 + Node 26

Site: Netlify

I’m the maintainer of Docusaurus and trying to upgrade to Node 26, including our Netlify deployment.

However, it seems that Node 24.x bundled a recent, built-in version of Corepack

Upgrading to Node 26 makes it use an older Corepack 0.34.0 version since it’s not built-in anymore

6:28:12 PM: build-image version: 969defd95f3977f8de9cb1f48802a7e6f3d8c0b3 (noble-new-builds)
6:28:12 PM: buildbot version: da08c58c86fd2fd84452083bddfb6c08916d3c99
6:28:12 PM: Building without cache
6:28:12 PM: Starting to prepare the repo for build
6:28:12 PM: No cached dependencies found. Cloning fresh repo
6:28:12 PM: git clone --filter=blob:none https://github.com/facebook/Docusaurus
6:28:14 PM: Preparing Git Reference refs/heads/main
6:28:16 PM: Custom build command detected. Proceeding with the specified command: '(echo 'Git backfill start' && git backfill && echo 'Git backfill end') & (echo 'Build packages start' && pnpm --dir .. build:packages && echo 'Build packages end') && wait $! && pnpm netlify:build:production'
6:28:17 PM: Installing dependencies
6:28:17 PM: mise ~/.config/mise/config.toml tools: python@3.14.3
6:28:17 PM: mise ~/.config/mise/config.toml tools: ruby@3.4.8
6:28:17 PM: mise ~/.config/mise/config.toml tools: go@1.26.2
6:28:18 PM: Downloading and installing node v26.9.0...
6:28:18 PM: Downloading https://nodejs.org/dist/v26.9.0/node-v26.9.0-linux-x64.tar.xz...
6:28:18 PM: Computing checksum with sha256sum
6:28:18 PM: Checksums matched!
6:28:20 PM: Now using node v26.9.0 (npm v11.19.1)
6:28:20 PM: Installing corepack@0.34.0
6:28:20 PM: added 1 package in 313ms
6:28:20 PM: Enabling Node.js Corepack
6:28:21 PM: Failed during stage 'Install dependencies': dependency_installation script returned non-zero exit code: 1
6:28:21 PM: node:internal/modules/cjs/loader:1595
6:28:21 PM:   throw err;
6:28:21 PM:   ^
6:28:21 PM: Error: Cannot find module '/opt/buildhome/.cache/node/corepack/v1/pnpm/12.3.4/bin/pnpm.cjs'
6:28:21 PM:     at Module._resolveFilename (node:internal/modules/cjs/loader:1591:15)
6:28:21 PM:     at wrapResolveFilename (node:internal/modules/cjs/loader:1145:27)
6:28:21 PM:     at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1169:10)
6:28:21 PM:     at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1196:12)
6:28:21 PM:     at Module._load (node:internal/modules/cjs/loader:1368:5)
6:28:21 PM:     at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
6:28:21 PM:     at executeUserEntryPoint (node:internal/modules/run_main:154:5)
6:28:21 PM:     at process.processTicksAndRejections (node:internal/process/task_queues:89:21) {
6:28:21 PM:   code: 'MODULE_NOT_FOUND',
6:28:21 PM:   requireStack: []
6:28:21 PM: }
6:28:21 PM: Node.js v26.9.0
6:28:21 PM: /opt/build-bin/run-build-functions.sh: line 226: [: : integer expression expected
6:28:21 PM: pnpm workspaces detected
6:28:21 PM: node:internal/modules/cjs/loader:1595
6:28:21 PM:   throw err;
6:28:21 PM:   ^
6:28:21 PM: Error: Cannot find module '/opt/buildhome/.cache/node/corepack/v1/pnpm/12.3.4/bin/pnpm.cjs'
6:28:21 PM:     at Module._resolveFilename (node:internal/modules/cjs/loader:1591:15)
6:28:21 PM:     at wrapResolveFilename (node:internal/modules/cjs/loader:1145:27)
6:28:21 PM:     at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1169:10)
6:28:21 PM:     at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1196:12)
6:28:21 PM:     at Module._load (node:internal/modules/cjs/loader:1368:5)
6:28:21 PM:     at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
6:28:21 PM:     at executeUserEntryPoint (node:internal/modules/run_main:154:5)
6:28:21 PM:     at process.processTicksAndRejections (node:internal/process/task_queues:89:21) {
6:28:21 PM:   code: 'MODULE_NOT_FOUND',
6:28:21 PM:   requireStack: []
6:28:21 PM: }
6:28:21 PM: Node.js v26.9.0
6:28:21 PM: Installing npm packages using pnpm version
6:28:21 PM: node:internal/modules/cjs/loader:1595
6:28:21 PM:   throw err;
6:28:21 PM:   ^
6:28:21 PM: Error: Cannot find module '/opt/buildhome/.cache/node/corepack/v1/pnpm/12.3.4/bin/pnpm.cjs'
6:28:21 PM:     at Module._resolveFilename (node:internal/modules/cjs/loader:1591:15)
6:28:21 PM:     at wrapResolveFilename (node:internal/modules/cjs/loader:1145:27)
6:28:21 PM:     at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1169:10)
6:28:21 PM:     at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1196:12)
6:28:21 PM:     at Module._load (node:internal/modules/cjs/loader:1368:5)
6:28:21 PM:     at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
6:28:21 PM:     at executeUserEntryPoint (node:internal/modules/run_main:154:5)
6:28:21 PM:     at process.processTicksAndRejections (node:internal/process/task_queues:89:21) {
6:28:21 PM:   code: 'MODULE_NOT_FOUND',
6:28:21 PM:   requireStack: []
6:28:21 PM: }
6:28:21 PM: Node.js v26.9.0
6:28:21 PM: Error during pnpm install
6:28:21 PM: Failing build: Failed to install dependencies

From what I understand, pnpm v11+ is not compatible with Corepack 0.34.0, as there’s a fix for it in v0.34.4: node/deps/corepack/CHANGELOG.md at main · nodejs/node · GitHub

It’s unclear to me how to use pnpm 12 + Node 26 on Netlify. I haven’t found any way to specify the Corepack version I want for my project, which is definitely not 0.34.0 but the newest version.

Note: pnpm author recommends to not use Corepack with pnpm.

Can you help me figure out a solution?
In the meantime I’ll have to revert to Node 24

We’re having the same issue. Netlify

Same issue. Trying to run PNPM on Netlify has been such a frustrating experience.

Same here. pnpm with Node 26 fails due to corepack 0.34. Please Update corepack to fix these build fails.

Just pushed a change on the free tier to use mise instead of corepack to install pnpm. This should solve the issue. Will be rolling this out to everyone in some time (assuming the rollout goes well).

Do note that, this change made us drop support for pnpm < 8. Users using the affected versions would get a failed build with the error message asking to upgrade.

As for updating corepack, looks like in newer versions of corepack, they dropped Node 25 support. So instead of managing different corepack versions for different Node versions, we’d likely be updating the installation logic for package managers instead, starting with pnpm for now.

Thanks

If we are on a paid tier, can’t we already try this change?

It would have been rolled out for all by now, but there were several issues one after the other. We’ve just resumed rollout for free after fixing those errors and are monitoring. This should be out for all within this week (ideally today).

This is now rolled out for everyone. Still monitoring closely and there are some minor things that we might want to fix up later, but currently it’s mostly out!

Sorry, we had to revert again due to node-gyp issues.