Upgrading npm globally on Node 24.14.1 (bundled npm 11.11.0) to any version >= 11.13.0 leaves a stale minipass@3.3.6 nested inside minipass-flush/node_modules/. After upgrade, any npm command crashes:
$ npm list -g --depth=0 npm error Class extends value undefined is not a constructor or null
Root Cause
minipass-flush@1.0.6 (introduced in npm 11.13.0) does: const { Minipass } = require('minipass') // expects named export from minipass@7.x
But Arborist leaves a stale nested minipass@3.3.6 in minipass-flush/node_modules/minipass/ during the self-upgrade. minipass@3.x uses default export → Minipass is undefined → crash.
Steps To Reproduce
# Fresh Node 24.14.1 (npm 11.11.0 bundled)
nvm install 24.14.1
npm install -g npm@11.15.0
npm list -g --depth=0 # CRASHES
Stepping-stone approach does NOT help:
npm install -g npm@11.12.1 # intermediate
npm install -g npm@11.15.0 # still leaves stale minipass
npm list -g --depth=0 # CRASHES
Workaround
npm install -g npm@11.15.0
rm -rf $(npm root -g)/npm/node_modules/minipass-flush/node_modules
npm list -g --depth=0 # works
npm install -g npm@latest should complete without corrupting its own dependency tree.
Upgrading npm globally on Node 24.14.1 (bundled npm 11.11.0) to any version >= 11.13.0 leaves a stale minipass@3.3.6 nested inside minipass-flush/node_modules/. After upgrade, any npm command crashes:
$ npm list -g --depth=0 npm error Class extends value undefined is not a constructor or nullRoot Cause
minipass-flush@1.0.6 (introduced in npm 11.13.0) does:
const { Minipass } = require('minipass') // expects named export from minipass@7.xBut Arborist leaves a stale nested minipass@3.3.6 in minipass-flush/node_modules/minipass/ during the self-upgrade. minipass@3.x uses default export → Minipass is undefined → crash.
Steps To Reproduce
Stepping-stone approach does NOT help:
Workaround
npm install -g npm@latest should complete without corrupting its own dependency tree.