Page MenuHomePhabricator

Node 20 `npm install` not working for me in Ubuntu localhost for GrowthExperiments
Closed, ResolvedPublicBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

  • WSL, Ubuntu
  • git clone
  • nvm use 20
  • npm install

What happens?:

novemlinguae@DESKTOP-J5KRKNI:~/mediawiki/extensions/GrowthExperiments$ npm install
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
npm error code 1
npm error path /home/novemlinguae/mediawiki/extensions/GrowthExperiments/node_modules/node-jq
npm error command failed
npm error command sh -c npm run install-binary
npm error > node-jq@6.3.1 install-binary
npm error > node scripts/install-binary.mjs
npm error
npm error /home/novemlinguae/mediawiki/extensions/GrowthExperiments/node_modules/node-jq/bin directory was created
npm error Downloading jq from https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64
npm error node:internal/deps/undici/undici:13510
npm error       Error.captureStackTrace(err);
npm error             ^
npm error
npm error TypeError: fetch failed
npm error     at node:internal/deps/undici/undici:13510:13
npm error     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
npm error     at async downloadFile (file:///home/novemlinguae/mediawiki/extensions/GrowthExperiments/node_modules/node-jq/scripts/install-binary.mjs:163:15)
npm error     at async downloadJqBinary (file:///home/novemlinguae/mediawiki/extensions/GrowthExperiments/node_modules/node-jq/scripts/install-binary.mjs:115:3) {
npm error   [cause]: Error: getaddrinfo EAI_AGAIN github.com
npm error       at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:120:26) {
npm error     errno: -3001,
npm error     code: 'EAI_AGAIN',
npm error     syscall: 'getaddrinfo',
npm error     hostname: 'github.com'
npm error   }
npm error }
npm error
npm error Node.js v20.19.2
npm error A complete log of this run can be found in: /home/novemlinguae/.npm/_logs/2026-04-08T12_56_45_568Z-debug-0.log

What should have happened instead?:

  • installation succeeds
  • no fatal error

Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):

Other information (browser name/version, screenshots, etc.):

  • some more info from the log file:
143 info run node-jq@6.3.1 preinstall node_modules/node-jq npm run install-binary
144 info run node-jq@6.3.1 preinstall { code: 1, signal: null }
145 verbose stack Error: command failed
145 verbose stack     at promiseSpawn (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:22:22)
145 verbose stack     at spawnWithShell (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:124:10)
145 verbose stack     at promiseSpawn (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:12:12)
145 verbose stack     at runScriptPkg (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js:77:13)
145 verbose stack     at runScript (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script.js:9:12)
145 verbose stack     at /home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js:329:17
145 verbose stack     at run (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:67:22)
145 verbose stack     at /home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:84:9
145 verbose stack     at new Promise (<anonymous>)
145 verbose stack     at callLimit (/home/novemlinguae/.nvm/versions/node/v20.19.2/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:35:69)
146 verbose pkgid node-jq@6.3.1

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

I think this build (kept forever) failed for a similar reason:

npm error code 1
npm error path /workspace/src/extensions/GrowthExperiments/node_modules/node-jq
npm error command failed
npm error command sh -c npm run install-binary
npm error > node-jq@6.3.1 install-binary
npm error > node scripts/install-binary.mjs
npm error
npm error /workspace/src/extensions/GrowthExperiments/node_modules/node-jq/bin directory was created
npm error Downloading jq from https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64
npm error npm warn Unknown env config "cypress-cache-folder". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm error file:///workspace/src/extensions/GrowthExperiments/node_modules/node-jq/scripts/install-binary.mjs:164
npm error   if (!res.ok) throw new Error(`Failed to download jq: ${res.statusText}`)
npm error                      ^
npm error
npm error Error: Failed to download jq: Gateway Time-out
npm error     at downloadFile (file:///workspace/src/extensions/GrowthExperiments/node_modules/node-jq/scripts/install-binary.mjs:164:22)
npm error     at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
npm error     at async downloadJqBinary (file:///workspace/src/extensions/GrowthExperiments/node_modules/node-jq/scripts/install-binary.mjs:115:3)
npm error
npm error Node.js v24.14.1

Suggestion: abandon this use of jq (edit: introduced in T410361) and just use Node.js to parse the .MessagesDirs.GrowthExperiments out of the extension.json for banana-checker.

Change #1270889 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/GrowthExperiments@master] Stop using jq to invoke banana-checker

https://gerrit.wikimedia.org/r/1270889

I went to go test out the recent patch. Strangely, I am unable to reproduce this bug anymore on master branch before loading the patch. I tried nvm use 20 and nvm use 24, npm ci and npm install. git log doesn't show any relevant master branch updates.

Strange!

But anyway, it does look like the root cause is narrowed down. So would encourage merging the patch anyway. Should make things less flaky.

Sgs claimed this task.

Thanks for the patch @Lucas_Werkmeister_WMDE, merged.

Change #1270889 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Stop using jq to invoke banana-checker

https://gerrit.wikimedia.org/r/1270889