Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Exit handler never called during clean-install, with Node.js v22.5.0 #7657

Closed
2 tasks done
divergentdave opened this issue Jul 17, 2024 · 32 comments
Closed
2 tasks done
Labels
Bug thing that needs fixing Needs Triage needs review for next steps

Comments

@divergentdave
Copy link
Contributor

Is there an existing issue for this?

  • I have searched the existing issues

This issue exists in the latest npm version

  • I am using the latest npm

Current Behavior

(While there are similar issues already open, the wiki page for "exit handler never called" errors recommends opening a new issue, so I am doing so)

I am running into errors when using Node.js v22.5.0 and npm v10.8.2 to install dependencies. In GitHub Actions, I'm seeing an "Exit handler never called!" error. I tried installing the same versions locally, and instead npm never exits -- the packages get installed, but I just see a spinner in the terminal forever. I did not have any issues in CI prior to the release of Node.js v22.5.0. When I use Node.js v20.12.2 and npm v10.8.2 locally, installation completes successfully. Thus, I think some change in Node.js v22.5.0 must be related.

Here's a log file from the error happening in GitHub Actions: 2024-07-17T17_07_43_972Z-debug-0.log. This came from the following run: https://github.com/divviup/divviup-api/actions/runs/9978466717/job/27575428716?pr=1178

Expected Behavior

npm ci should succeed and exit cleanly.

Steps To Reproduce

  1. Install Node.js v22.5.0.
  2. Install npm v10.8.2.
  3. git clone https://github.com/divviup/divviup-api.git
  4. cd divviup-api/app
  5. git checkout 3edafaefe90795387db3e35a161f3110c3ac3dea
  6. npm ci

Environment

  • npm: v10.8.2
  • Node.js: v22.5.0
  • OS Name: Ubuntu
  • System Model Name: Unknown, Azure instance
  • npm config:
; node bin location = /opt/hostedtoolcache/node/22.5.0/x64/bin/node
; node version = v22.5.0
; npm local prefix = /home/runner/work/divviup-api/divviup-api/app
; npm version = 10.8.2
; cwd = /home/runner/work/divviup-api/divviup-api/app
; HOME = /home/runner
; Run `npm config ls -l` to show all defaults.
@divergentdave divergentdave added Bug thing that needs fixing Needs Triage needs review for next steps labels Jul 17, 2024
@coreynolan
Copy link

coreynolan commented Jul 17, 2024

Experiencing the same issue with Node v22.5.0. As a temporary fix, I reverted my workflow to my previously used version.

        uses: actions/setup-node@v4
        with:
          node-version: 22.4.x

Interested to hear when a fix is made.

@ABenavidesCTR
Copy link

We are having the same issue on our GitHub actions, and we confirmed that yesterday the actions were working while using v22.4.1, but started to fail today when the v22.5.0 version was used. Setting the version to the previous one as @coreynolan suggested worked.

@ljharb
Copy link
Contributor

ljharb commented Jul 17, 2024

I'm getting this as well.

@Charlie-Brownie
Copy link

Also getting this in Azure Pipelines.

@RileySeaburg
Copy link

Can confirm I receive this issue in Jenkins

@GooGam
Copy link

GooGam commented Jul 18, 2024

Can confirm the same issue with Google Cloud Build

@bgalek
Copy link

bgalek commented Jul 18, 2024

The same on GitHub runners

@Chippiewill
Copy link

Also seeing this with certain combinations of packages when doing fresh node environment installs with pre-commit.

@sequba
Copy link

sequba commented Jul 18, 2024

In HyperFormula project Node 22.5.0 fails to install dependencies with message:

npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error   <https://github.com/npm/cli/issues>
npm error A complete log of this run can be found in: (...)

Environment: ubuntu-latest
Command: npm ci

Version 22.4.1 worked.

GH workflow run: https://github.com/handsontable/hyperformula/actions/runs/9989988926/job/27610940453

@dgilmanAIDENTIFIED
Copy link

CloudFlare page builders on Node 22 are also impacted but setting the NODE_ENV enviroment variable to 22.4 forces them to install 22.4.x and gets builds working again.

@milaninfy
Copy link
Contributor

quickly tried reproduction using steps mentioned in this issue with these configuration

with node 22.4.1 and latest npm 10.8.2 works fine and install completes as expected every time
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ npm -v
10.8.2
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ node -v
v22.4.1
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ npm ci

added 599 packages, and audited 600 packages in 19s

162 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
with node 22.5.0 and latest npm 10.8.2 hangs every time
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ npm -v
10.8.2
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ node -v
v22.4.1
vscode ➜ .../ubuntu/test/divviup-api/app (3edafae) $ npm ci
⠼^C

@wjhsf
Copy link

wjhsf commented Jul 18, 2024

Interesting, could you provide the exact crash? Is it FATAL ERROR: v8::Object::GetCreationContextChecked No creation context available?

I don't see that anywhere, but perhaps npm swallows it?

volta run --node 22.5.0 --npm 10.7.0 npm i @microsoft/api-documenter @microsoft/api-extractor @types/jest eslint --no-progress

npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error     <https://github.com/npm/cli/issues>


npm error A complete log of this run can be found in: /Users/wharney/.npm/_logs/2024-07-18T15_47_42_983Z-debug-0.log
/Users/wharney/.npm/_logs/2024-07-18T15_47_42_983Z-debug-0.log
0 verbose cli /Users/wharney/.volta/tools/image/node/22.5.0/bin/node /Users/wharney/.volta/tools/image/npm/10.7.0/bin/npm-cli.js
1 info using npm@10.7.0
2 info using node@v22.5.0
3 silly config:load:file:/Users/wharney/.volta/tools/image/npm/10.7.0/npmrc
4 silly config:load:file:/Users/wharney/Projects/tmp/.npmrc
5 silly config:load:file:/Users/wharney/.npmrc
6 silly config:load:file:/Users/wharney/.volta/tools/image/node/22.5.0/etc/npmrc
7 verbose title npm i @microsoft/api-documenter @microsoft/api-extractor @types/jest eslint
8 verbose argv "i" "@microsoft/api-documenter" "@microsoft/api-extractor" "@types/jest" "eslint" "--no-progress"
9 verbose logfile logs-max:10 dir:/Users/wharney/.npm/_logs/2024-07-18T15_47_42_983Z-
10 verbose logfile /Users/wharney/.npm/_logs/2024-07-18T15_47_42_983Z-debug-0.log
11 silly logfile start cleaning logs, removing 1 files
12 silly logfile done cleaning log files
13 silly idealTree buildDeps
14 silly fetch manifest @microsoft/api-documenter@*
15 http fetch GET 200 https://registry.npmjs.org/@microsoft%2fapi-documenter 897ms (cache revalidated)
16 silly fetch manifest @microsoft/api-extractor@*
17 http fetch GET 200 https://registry.npmjs.org/@microsoft%2fapi-extractor 101ms (cache revalidated)
18 silly fetch manifest @types/jest@*
19 http fetch GET 200 https://registry.npmjs.org/@types%2fjest 83ms (cache revalidated)
20 silly fetch manifest eslint@*
21 http fetch GET 200 https://registry.npmjs.org/eslint 92ms (cache revalidated)
22 silly placeDep ROOT @microsoft/api-documenter@7.25.7 OK for:  want: *
23 silly placeDep ROOT @microsoft/api-extractor@7.47.2 OK for:  want: *
24 silly placeDep ROOT @types/jest@29.5.12 OK for:  want: *
25 silly placeDep ROOT eslint@9.7.0 OK for:  want: *
26 silly fetch manifest @microsoft/tsdoc@~0.15.0
27 silly fetch manifest js-yaml@~3.13.1
28 silly fetch manifest resolve@~1.22.1
29 silly fetch manifest @microsoft/api-extractor-model@7.29.3
30 silly fetch manifest @rushstack/ts-command-line@4.22.2
31 silly fetch manifest @rushstack/node-core-library@5.5.0
32 silly fetch manifest @rushstack/terminal@0.13.2
33 silly fetch manifest @microsoft/tsdoc-config@~0.17.0
34 silly fetch manifest lodash@~4.17.15
35 silly fetch manifest minimatch@~3.0.3
36 silly fetch manifest semver@~7.5.4
37 silly fetch manifest source-map@~0.6.1
38 silly fetch manifest typescript@5.4.2
39 http fetch GET 200 https://registry.npmjs.org/js-yaml 74ms (cache revalidated)
40 http fetch GET 200 https://registry.npmjs.org/semver 160ms (cache revalidated)
41 http fetch GET 200 https://registry.npmjs.org/typescript 193ms (cache revalidated)
42 silly fetch manifest @rushstack/rig-package@0.5.2
43 http fetch GET 200 https://registry.npmjs.org/minimatch 288ms (cache revalidated)
44 http fetch GET 200 https://registry.npmjs.org/resolve 294ms (cache revalidated)
45 silly fetch manifest expect@^29.0.0
46 http fetch GET 200 https://registry.npmjs.org/@microsoft%2ftsdoc 298ms (cache revalidated)
47 silly fetch manifest pretty-format@^29.0.0
48 silly fetch manifest ajv@^6.12.4
49 http fetch GET 200 https://registry.npmjs.org/lodash 298ms (cache revalidated)
50 silly fetch manifest levn@^0.4.1
51 http fetch GET 200 https://registry.npmjs.org/source-map 300ms (cache revalidated)
52 silly fetch manifest chalk@^4.0.0
53 http fetch GET 200 https://registry.npmjs.org/@rushstack%2fts-command-line 304ms (cache revalidated)
54 silly fetch manifest debug@^4.3.2
55 silly fetch manifest espree@^10.1.0
56 http fetch GET 200 https://registry.npmjs.org/@microsoft%2ftsdoc-config 305ms (cache revalidated)
57 silly fetch manifest ignore@^5.2.0
58 http fetch GET 200 https://registry.npmjs.org/@rushstack%2fnode-core-library 308ms (cache revalidated)
59 silly fetch manifest esquery@^1.5.0
60 silly fetch manifest esutils@^2.0.2
61 http fetch GET 200 https://registry.npmjs.org/@microsoft%2fapi-extractor-model 311ms (cache revalidated)
62 silly fetch manifest find-up@^5.0.0
63 silly fetch manifest is-glob@^4.0.0
64 http fetch GET 200 https://registry.npmjs.org/@rushstack%2fterminal 313ms (cache revalidated)
65 silly fetch manifest minimatch@^3.1.2
66 silly fetch manifest @eslint/js@9.7.0
67 silly fetch manifest optionator@^0.9.3
68 http fetch GET 200 https://registry.npmjs.org/find-up 61ms (cache revalidated)
69 silly fetch manifest strip-ansi@^6.0.1
70 http fetch GET 200 https://registry.npmjs.org/ignore 74ms (cache revalidated)
71 silly fetch manifest text-table@^0.2.0
72 http fetch GET 200 https://registry.npmjs.org/ajv 87ms (cache revalidated)
73 silly fetch manifest cross-spawn@^7.0.2
74 http fetch GET 200 https://registry.npmjs.org/pretty-format 105ms (cache revalidated)
75 silly fetch manifest glob-parent@^6.0.2
76 http fetch GET 200 https://registry.npmjs.org/expect 122ms (cache revalidated)
77 silly fetch manifest imurmurhash@^0.1.4
78 http fetch GET 200 https://registry.npmjs.org/is-glob 111ms (cache revalidated)
79 silly fetch manifest eslint-scope@^8.0.2
80 http fetch GET 200 https://registry.npmjs.org/levn 124ms (cache revalidated)
81 silly fetch manifest lodash.merge@^4.6.2
82 http fetch GET 200 https://registry.npmjs.org/esutils 116ms (cache revalidated)
83 silly fetch manifest is-path-inside@^3.0.3
84 http fetch GET 200 https://registry.npmjs.org/chalk 123ms (cache revalidated)
85 silly fetch manifest fast-deep-equal@^3.1.3
86 http fetch GET 200 https://registry.npmjs.org/espree 124ms (cache revalidated)
87 silly fetch manifest natural-compare@^1.4.0
88 http fetch GET 200 https://registry.npmjs.org/debug 127ms (cache revalidated)
89 silly fetch manifest @eslint/eslintrc@^3.1.0
90 http fetch GET 200 https://registry.npmjs.org/@eslint%2fjs 124ms (cache revalidated)
91 silly fetch manifest @nodelib/fs.walk@^1.2.8
92 http fetch GET 200 https://registry.npmjs.org/strip-ansi 83ms (cache revalidated)
93 silly fetch manifest file-entry-cache@^8.0.0
94 http fetch GET 200 https://registry.npmjs.org/@rushstack%2frig-package 204ms (cache revalidated)
95 silly fetch manifest eslint-visitor-keys@^4.0.0
96 http fetch GET 200 https://registry.npmjs.org/glob-parent 79ms (cache revalidated)
97 silly fetch manifest @eslint/config-array@^0.17.0
98 http fetch GET 200 https://registry.npmjs.org/eslint-scope 68ms (cache revalidated)
99 silly fetch manifest @humanwhocodes/retry@^0.3.0
100 http fetch GET 200 https://registry.npmjs.org/fast-deep-equal 66ms (cache revalidated)
101 silly fetch manifest escape-string-regexp@^4.0.0
102 http fetch GET 200 https://registry.npmjs.org/text-table 114ms (cache revalidated)
103 silly fetch manifest @eslint-community/regexpp@^4.11.0
104 http fetch GET 200 https://registry.npmjs.org/imurmurhash 78ms (cache revalidated)
105 silly fetch manifest @eslint-community/eslint-utils@^4.2.0
106 http fetch GET 200 https://registry.npmjs.org/cross-spawn 107ms (cache revalidated)
107 silly fetch manifest @humanwhocodes/module-importer@^1.0.1
108 http fetch GET 200 https://registry.npmjs.org/natural-compare 71ms (cache revalidated)
109 silly fetch manifest json-stable-stringify-without-jsonify@^1.0.1
110 http fetch GET 200 https://registry.npmjs.org/is-path-inside 78ms (cache revalidated)
111 http fetch GET 200 https://registry.npmjs.org/lodash.merge 79ms (cache revalidated)
112 http fetch GET 200 https://registry.npmjs.org/optionator 193ms (cache revalidated)
113 http fetch GET 200 https://registry.npmjs.org/file-entry-cache 54ms (cache revalidated)
114 http fetch GET 200 https://registry.npmjs.org/@nodelib%2ffs.walk 76ms (cache revalidated)
115 http fetch GET 200 https://registry.npmjs.org/eslint-visitor-keys 60ms (cache revalidated)
116 http fetch GET 200 https://registry.npmjs.org/@eslint%2feslintrc 102ms (cache revalidated)
117 http fetch GET 200 https://registry.npmjs.org/escape-string-regexp 67ms (cache revalidated)
118 http fetch GET 200 https://registry.npmjs.org/json-stable-stringify-without-jsonify 62ms (cache revalidated)
119 http fetch GET 200 https://registry.npmjs.org/esquery 257ms (cache revalidated)
120 http fetch GET 200 https://registry.npmjs.org/@eslint%2fconfig-array 88ms (cache revalidated)
121 http fetch GET 200 https://registry.npmjs.org/@humanwhocodes%2fretry 89ms (cache revalidated)
122 http fetch GET 200 https://registry.npmjs.org/@humanwhocodes%2fmodule-importer 85ms (cache revalidated)
123 http fetch GET 200 https://registry.npmjs.org/@eslint-community%2feslint-utils 95ms (cache revalidated)
124 http fetch GET 200 https://registry.npmjs.org/@eslint-community%2fregexpp 203ms (cache revalidated)
125 silly fetch manifest @types/node@*
126 http fetch GET 200 https://registry.npmjs.org/@types%2fnode 87ms (cache revalidated)
127 silly placeDep ROOT @microsoft/api-extractor-model@7.29.3 OK for: @microsoft/api-documenter@7.25.7 want: 7.29.3
128 silly placeDep ROOT @microsoft/tsdoc@0.15.0 OK for: @microsoft/api-documenter@7.25.7 want: ~0.15.0
129 silly placeDep ROOT @rushstack/node-core-library@5.5.0 OK for: @microsoft/api-documenter@7.25.7 want: 5.5.0
130 silly placeDep ROOT @rushstack/terminal@0.13.2 OK for: @microsoft/api-documenter@7.25.7 want: 0.13.2
131 silly placeDep ROOT @rushstack/ts-command-line@4.22.2 OK for: @microsoft/api-documenter@7.25.7 want: 4.22.2
132 silly placeDep ROOT js-yaml@3.13.1 OK for: @microsoft/api-documenter@7.25.7 want: ~3.13.1
133 silly placeDep ROOT resolve@1.22.8 OK for: @microsoft/api-documenter@7.25.7 want: ~1.22.1
134 silly fetch manifest fs-extra@~7.0.1
135 silly fetch manifest import-lazy@~4.0.0
136 silly fetch manifest jju@~1.4.0
137 silly fetch manifest ajv@~8.13.0
138 silly fetch manifest ajv-draft-04@~1.0.0
139 silly fetch manifest ajv-formats@~3.0.1
140 silly fetch manifest supports-color@~8.1.1
141 silly fetch manifest @types/argparse@1.0.38
142 silly fetch manifest argparse@~1.0.9
143 silly fetch manifest string-argv@~0.3.1
144 silly fetch manifest argparse@^1.0.7
145 silly fetch manifest esprima@^4.0.0
146 silly fetch manifest is-core-module@^2.13.0
147 silly fetch manifest path-parse@^1.0.7
148 silly fetch manifest supports-preserve-symlinks-flag@^1.0.0
149 http fetch GET 200 https://registry.npmjs.org/supports-color 63ms (cache revalidated)
150 http fetch GET 200 https://registry.npmjs.org/import-lazy 65ms (cache revalidated)
151 http fetch GET 200 https://registry.npmjs.org/ajv-draft-04 69ms (cache revalidated)
152 http fetch GET 200 https://registry.npmjs.org/esprima 62ms (cache revalidated)
153 http fetch GET 200 https://registry.npmjs.org/string-argv 71ms (cache revalidated)
154 http fetch GET 200 https://registry.npmjs.org/fs-extra 75ms (cache revalidated)
155 http fetch GET 200 https://registry.npmjs.org/argparse 67ms (cache revalidated)
156 http fetch GET 200 https://registry.npmjs.org/supports-preserve-symlinks-flag 68ms (cache revalidated)
157 http fetch GET 200 https://registry.npmjs.org/ajv-formats 79ms (cache revalidated)
158 http fetch GET 200 https://registry.npmjs.org/argparse 81ms (cache revalidated)
159 http fetch GET 200 https://registry.npmjs.org/is-core-module 74ms (cache revalidated)
160 http fetch GET 200 https://registry.npmjs.org/path-parse 76ms (cache revalidated)
161 http fetch GET 200 https://registry.npmjs.org/@types%2fargparse 90ms (cache revalidated)
162 http fetch GET 200 https://registry.npmjs.org/jju 100ms (cache revalidated)
163 silly placeDep ROOT @microsoft/tsdoc-config@0.17.0 OK for: @microsoft/api-extractor@7.47.2 want: ~0.17.0
164 silly placeDep ROOT @rushstack/rig-package@0.5.2 OK for: @microsoft/api-extractor@7.47.2 want: 0.5.2
165 silly placeDep ROOT lodash@4.17.21 OK for: @microsoft/api-extractor@7.47.2 want: ~4.17.15
166 silly placeDep ROOT minimatch@3.0.8 OK for: @microsoft/api-extractor@7.47.2 want: ~3.0.3
167 silly placeDep ROOT semver@7.5.4 OK for: @microsoft/api-extractor@7.47.2 want: ~7.5.4
168 silly placeDep ROOT source-map@0.6.1 OK for: @microsoft/api-extractor@7.47.2 want: ~0.6.1
169 silly placeDep ROOT typescript@5.4.2 OK for: @microsoft/api-extractor@7.47.2 want: 5.4.2
170 silly fetch manifest ajv@~8.12.0
171 silly fetch manifest strip-json-comments@~3.1.1
172 silly fetch manifest brace-expansion@^1.1.7
173 silly fetch manifest lru-cache@^6.0.0
174 http fetch GET 200 https://registry.npmjs.org/brace-expansion 50ms (cache revalidated)
175 http fetch GET 200 https://registry.npmjs.org/strip-json-comments 52ms (cache revalidated)
176 http fetch GET 200 https://registry.npmjs.org/lru-cache 54ms (cache revalidated)
177 silly placeDep ROOT ajv@8.12.0 OK for: @microsoft/tsdoc-config@0.17.0 want: ~8.12.0
178 silly placeDep ROOT jju@1.4.0 OK for: @microsoft/tsdoc-config@0.17.0 want: ~1.4.0
179 silly fetch manifest uri-js@^4.2.2
180 silly fetch manifest fast-deep-equal@^3.1.1
181 silly fetch manifest require-from-string@^2.0.2
182 silly fetch manifest json-schema-traverse@^1.0.0
183 http fetch GET 200 https://registry.npmjs.org/require-from-string 59ms (cache revalidated)
184 http fetch GET 200 https://registry.npmjs.org/uri-js 60ms (cache revalidated)
185 http fetch GET 200 https://registry.npmjs.org/json-schema-traverse 60ms (cache revalidated)
186 silly placeDep node_modules/@rushstack/node-core-library ajv@8.13.0 OK for: @rushstack/node-core-library@5.5.0 want: ~8.13.0
187 silly placeDep ROOT ajv-draft-04@1.0.0 OK for: @rushstack/node-core-library@5.5.0 want: ~1.0.0
188 silly placeDep ROOT ajv-formats@3.0.1 OK for: @rushstack/node-core-library@5.5.0 want: ~3.0.1
189 silly placeDep ROOT fs-extra@7.0.1 OK for: @rushstack/node-core-library@5.5.0 want: ~7.0.1
190 silly placeDep ROOT import-lazy@4.0.0 OK for: @rushstack/node-core-library@5.5.0 want: ~4.0.0
191 silly fetch manifest uri-js@^4.4.1
192 silly fetch manifest graceful-fs@^4.1.2
193 silly fetch manifest jsonfile@^4.0.0
194 silly fetch manifest universalify@^0.1.0
195 http fetch GET 200 https://registry.npmjs.org/graceful-fs 52ms (cache revalidated)
196 http fetch GET 200 https://registry.npmjs.org/jsonfile 54ms (cache revalidated)
197 http fetch GET 200 https://registry.npmjs.org/universalify 56ms (cache revalidated)
198 silly placeDep ROOT strip-json-comments@3.1.1 OK for: @rushstack/rig-package@0.5.2 want: ~3.1.1
199 silly placeDep ROOT supports-color@8.1.1 OK for: @rushstack/terminal@0.13.2 want: ~8.1.1
200 silly fetch manifest has-flag@^4.0.0
201 http fetch GET 200 https://registry.npmjs.org/has-flag 47ms (cache revalidated)
202 silly placeDep ROOT @types/argparse@1.0.38 OK for: @rushstack/ts-command-line@4.22.2 want: 1.0.38
203 silly placeDep ROOT argparse@1.0.10 OK for: @rushstack/ts-command-line@4.22.2 want: ~1.0.9
204 silly placeDep ROOT string-argv@0.3.2 OK for: @rushstack/ts-command-line@4.22.2 want: ~0.3.1
205 silly fetch manifest sprintf-js@~1.0.2
206 http fetch GET 200 https://registry.npmjs.org/sprintf-js 69ms (cache revalidated)
207 silly placeDep ROOT expect@29.7.0 OK for: @types/jest@29.5.12 want: ^29.0.0
208 silly placeDep ROOT pretty-format@29.7.0 OK for: @types/jest@29.5.12 want: ^29.0.0
209 silly fetch manifest jest-util@^29.7.0
210 silly fetch manifest jest-get-type@^29.6.3
211 silly fetch manifest jest-message-util@^29.7.0
212 silly fetch manifest @jest/expect-utils@^29.7.0
213 silly fetch manifest jest-matcher-utils@^29.7.0
214 silly fetch manifest react-is@^18.0.0
215 silly fetch manifest ansi-styles@^5.0.0
216 silly fetch manifest @jest/schemas@^29.6.3
217 http fetch GET 200 https://registry.npmjs.org/ansi-styles 49ms (cache revalidated)
218 http fetch GET 200 https://registry.npmjs.org/jest-util 54ms (cache revalidated)
219 http fetch GET 200 https://registry.npmjs.org/jest-get-type 60ms (cache revalidated)
220 http fetch GET 200 https://registry.npmjs.org/jest-message-util 63ms (cache revalidated)
221 http fetch GET 200 https://registry.npmjs.org/react-is 74ms (cache revalidated)
222 http fetch GET 200 https://registry.npmjs.org/@jest%2fexpect-utils 98ms (cache revalidated)
223 http fetch GET 200 https://registry.npmjs.org/jest-matcher-utils 100ms (cache revalidated)
224 http fetch GET 200 https://registry.npmjs.org/@jest%2fschemas 116ms (cache revalidated)
225 silly placeDep ROOT fast-deep-equal@3.1.3 OK for: ajv@8.12.0 want: ^3.1.1
226 silly placeDep ROOT json-schema-traverse@1.0.0 OK for: ajv@8.12.0 want: ^1.0.0
227 silly placeDep ROOT require-from-string@2.0.2 OK for: ajv@8.12.0 want: ^2.0.2
228 silly placeDep ROOT uri-js@4.4.1 OK for: ajv@8.12.0 want: ^4.2.2
229 silly fetch manifest punycode@^2.1.0
230 http fetch GET 200 https://registry.npmjs.org/punycode 52ms (cache revalidated)
231 silly placeDep ROOT sprintf-js@1.0.3 OK for: argparse@1.0.10 want: ~1.0.2
232 silly fetch manifest eslint@^6.0.0 || ^7.0.0 || >=8.0.0
233 silly placeDep ROOT @eslint-community/eslint-utils@4.4.0 OK for: eslint@9.7.0 want: ^4.2.0
234 silly placeDep ROOT @eslint-community/regexpp@4.11.0 OK for: eslint@9.7.0 want: ^4.11.0
235 silly placeDep ROOT @eslint/config-array@0.17.0 OK for: eslint@9.7.0 want: ^0.17.0
236 silly placeDep ROOT @eslint/eslintrc@3.1.0 OK for: eslint@9.7.0 want: ^3.1.0
237 silly placeDep ROOT @eslint/js@9.7.0 OK for: eslint@9.7.0 want: 9.7.0
238 silly placeDep ROOT @humanwhocodes/module-importer@1.0.1 OK for: eslint@9.7.0 want: ^1.0.1
239 silly placeDep ROOT @humanwhocodes/retry@0.3.0 OK for: eslint@9.7.0 want: ^0.3.0
240 silly placeDep ROOT @nodelib/fs.walk@1.2.8 OK for: eslint@9.7.0 want: ^1.2.8
241 silly placeDep node_modules/eslint ajv@6.12.6 OK for: eslint@9.7.0 want: ^6.12.4
242 silly placeDep ROOT chalk@4.1.2 OK for: eslint@9.7.0 want: ^4.0.0
243 silly placeDep ROOT cross-spawn@7.0.3 OK for: eslint@9.7.0 want: ^7.0.2
244 silly placeDep ROOT debug@4.3.5 OK for: eslint@9.7.0 want: ^4.3.2
245 silly placeDep ROOT escape-string-regexp@4.0.0 OK for: eslint@9.7.0 want: ^4.0.0
246 silly placeDep ROOT eslint-scope@8.0.2 OK for: eslint@9.7.0 want: ^8.0.2
247 silly placeDep ROOT eslint-visitor-keys@4.0.0 OK for: eslint@9.7.0 want: ^4.0.0
248 silly placeDep ROOT espree@10.1.0 OK for: eslint@9.7.0 want: ^10.1.0
249 silly placeDep ROOT esquery@1.6.0 OK for: eslint@9.7.0 want: ^1.5.0
250 silly placeDep ROOT esutils@2.0.3 OK for: eslint@9.7.0 want: ^2.0.2
251 silly placeDep ROOT file-entry-cache@8.0.0 OK for: eslint@9.7.0 want: ^8.0.0
252 silly placeDep ROOT find-up@5.0.0 OK for: eslint@9.7.0 want: ^5.0.0
253 silly placeDep ROOT glob-parent@6.0.2 OK for: eslint@9.7.0 want: ^6.0.2
254 silly placeDep ROOT ignore@5.3.1 OK for: eslint@9.7.0 want: ^5.2.0
255 silly placeDep ROOT imurmurhash@0.1.4 OK for: eslint@9.7.0 want: ^0.1.4
256 silly placeDep ROOT is-glob@4.0.3 OK for: eslint@9.7.0 want: ^4.0.0
257 silly placeDep ROOT is-path-inside@3.0.3 OK for: eslint@9.7.0 want: ^3.0.3
258 silly placeDep ROOT json-stable-stringify-without-jsonify@1.0.1 OK for: eslint@9.7.0 want: ^1.0.1
259 silly placeDep ROOT levn@0.4.1 OK for: eslint@9.7.0 want: ^0.4.1
260 silly placeDep ROOT lodash.merge@4.6.2 OK for: eslint@9.7.0 want: ^4.6.2
261 silly placeDep node_modules/eslint minimatch@3.1.2 OK for: eslint@9.7.0 want: ^3.1.2
262 silly placeDep ROOT natural-compare@1.4.0 OK for: eslint@9.7.0 want: ^1.4.0
263 silly placeDep ROOT optionator@0.9.4 OK for: eslint@9.7.0 want: ^0.9.3
264 silly placeDep ROOT strip-ansi@6.0.1 OK for: eslint@9.7.0 want: ^6.0.1
265 silly placeDep ROOT text-table@0.2.0 OK for: eslint@9.7.0 want: ^0.2.0
266 silly fetch manifest eslint-visitor-keys@^3.3.0
267 silly fetch manifest @eslint/object-schema@^2.1.4
268 silly fetch manifest debug@^4.3.1
269 silly fetch manifest espree@^10.0.1
270 silly fetch manifest globals@^14.0.0
271 silly fetch manifest import-fresh@^3.2.1
272 silly fetch manifest js-yaml@^4.1.0
273 silly fetch manifest @nodelib/fs.scandir@2.1.5
274 silly fetch manifest fastq@^1.6.0
275 silly fetch manifest json-schema-traverse@^0.4.1
276 silly fetch manifest fast-json-stable-stringify@^2.0.0
277 silly fetch manifest ansi-styles@^4.1.0
278 silly fetch manifest supports-color@^7.1.0
279 silly fetch manifest path-key@^3.1.0
280 silly fetch manifest shebang-command@^2.0.0
281 silly fetch manifest which@^2.0.1
282 silly fetch manifest ms@2.1.2
283 silly fetch manifest esrecurse@^4.3.0
284 silly fetch manifest estraverse@^5.2.0
285 silly fetch manifest acorn@^8.12.0
286 silly fetch manifest acorn-jsx@^5.3.2
287 silly fetch manifest estraverse@^5.1.0
288 http fetch GET 200 https://registry.npmjs.org/path-key 53ms (cache revalidated)
289 silly fetch manifest flat-cache@^4.0.0
290 http fetch GET 200 https://registry.npmjs.org/shebang-command 53ms (cache revalidated)
291 silly fetch manifest locate-path@^6.0.0
292 http fetch GET 200 https://registry.npmjs.org/import-fresh 60ms (cache revalidated)
293 silly fetch manifest path-exists@^4.0.0
294 http fetch GET 200 https://registry.npmjs.org/estraverse 58ms (cache revalidated)
295 silly fetch manifest is-glob@^4.0.3
296 silly fetch manifest is-extglob@^2.1.1
297 http fetch GET 200 https://registry.npmjs.org/acorn-jsx 65ms (cache revalidated)
298 silly fetch manifest prelude-ls@^1.2.1
299 http fetch GET 200 https://registry.npmjs.org/estraverse 69ms (cache revalidated)
300 silly fetch manifest type-check@~0.4.0
301 http fetch GET 200 https://registry.npmjs.org/fast-json-stable-stringify 72ms (cache revalidated)
302 http fetch GET 200 https://registry.npmjs.org/acorn 71ms (cache revalidated)
303 silly fetch manifest deep-is@^0.1.3
304 http fetch GET 200 https://registry.npmjs.org/ms 79ms (cache revalidated)
305 silly fetch manifest word-wrap@^1.2.5
306 http fetch GET 200 https://registry.npmjs.org/globals 86ms (cache revalidated)
307 silly fetch manifest type-check@^0.4.0
308 http fetch GET 200 https://registry.npmjs.org/fastq 88ms (cache revalidated)
309 silly fetch manifest fast-levenshtein@^2.0.6
310 http fetch GET 200 https://registry.npmjs.org/esrecurse 85ms (cache revalidated)
311 silly fetch manifest ansi-regex@^5.0.1
312 http fetch GET 200 https://registry.npmjs.org/which 89ms (cache revalidated)
313 http fetch GET 200 https://registry.npmjs.org/@nodelib%2ffs.scandir 98ms (cache revalidated)
314 http fetch GET 200 https://registry.npmjs.org/flat-cache 43ms (cache revalidated)
315 http fetch GET 200 https://registry.npmjs.org/@eslint%2fobject-schema 112ms (cache revalidated)
316 http fetch GET 200 https://registry.npmjs.org/path-exists 57ms (cache revalidated)
317 http fetch GET 200 https://registry.npmjs.org/locate-path 69ms (cache revalidated)
318 http fetch GET 200 https://registry.npmjs.org/is-extglob 68ms (cache revalidated)
319 http fetch GET 200 https://registry.npmjs.org/deep-is 54ms (cache revalidated)
320 http fetch GET 200 https://registry.npmjs.org/fast-levenshtein 48ms (cache revalidated)
321 http fetch GET 200 https://registry.npmjs.org/type-check 63ms (cache revalidated)
322 http fetch GET 200 https://registry.npmjs.org/ansi-regex 49ms (cache revalidated)
323 http fetch GET 200 https://registry.npmjs.org/type-check 53ms (cache revalidated)
324 http fetch GET 200 https://registry.npmjs.org/prelude-ls 72ms (cache revalidated)
325 http fetch GET 200 https://registry.npmjs.org/word-wrap 95ms (cache revalidated)
326 silly placeDep node_modules/@eslint-community/eslint-utils eslint-visitor-keys@3.4.3 OK for: @eslint-community/eslint-utils@4.4.0 want: ^3.3.0
327 silly placeDep ROOT @eslint/object-schema@2.1.4 OK for: @eslint/config-array@0.17.0 want: ^2.1.4
328 silly placeDep node_modules/@eslint/config-array minimatch@3.1.2 OK for: @eslint/config-array@0.17.0 want: ^3.1.2
329 silly placeDep node_modules/@eslint/eslintrc ajv@6.12.6 OK for: @eslint/eslintrc@3.1.0 want: ^6.12.4
330 silly placeDep ROOT globals@14.0.0 OK for: @eslint/eslintrc@3.1.0 want: ^14.0.0
331 silly placeDep ROOT import-fresh@3.3.0 OK for: @eslint/eslintrc@3.1.0 want: ^3.2.1
332 silly placeDep node_modules/@eslint/eslintrc js-yaml@4.1.0 OK for: @eslint/eslintrc@3.1.0 want: ^4.1.0
333 silly placeDep node_modules/@eslint/eslintrc minimatch@3.1.2 OK for: @eslint/eslintrc@3.1.0 want: ^3.1.2
334 silly fetch manifest parent-module@^1.0.0
335 silly fetch manifest resolve-from@^4.0.0
336 silly fetch manifest argparse@^2.0.1
337 http fetch GET 200 https://registry.npmjs.org/parent-module 78ms (cache revalidated)
338 http fetch GET 200 https://registry.npmjs.org/resolve-from 80ms (cache revalidated)
339 silly placeDep ROOT @nodelib/fs.scandir@2.1.5 OK for: @nodelib/fs.walk@1.2.8 want: 2.1.5
340 silly placeDep ROOT fastq@1.17.1 OK for: @nodelib/fs.walk@1.2.8 want: ^1.6.0
341 silly fetch manifest @nodelib/fs.stat@2.0.5
342 silly fetch manifest run-parallel@^1.1.9
343 silly fetch manifest reusify@^1.0.4
344 http fetch GET 200 https://registry.npmjs.org/reusify 39ms (cache revalidated)
345 http fetch GET 200 https://registry.npmjs.org/run-parallel 52ms (cache revalidated)
346 http fetch GET 200 https://registry.npmjs.org/@nodelib%2ffs.stat 90ms (cache revalidated)
347 silly placeDep ROOT @nodelib/fs.stat@2.0.5 OK for: @nodelib/fs.scandir@2.1.5 want: 2.0.5
348 silly placeDep ROOT run-parallel@1.2.0 OK for: @nodelib/fs.scandir@2.1.5 want: ^1.1.9
349 silly fetch manifest queue-microtask@^1.2.2
350 http fetch GET 200 https://registry.npmjs.org/queue-microtask 59ms (cache revalidated)
351 silly placeDep ROOT ansi-styles@4.3.0 OK for: chalk@4.1.2 want: ^4.1.0
352 silly placeDep node_modules/chalk supports-color@7.2.0 OK for: chalk@4.1.2 want: ^7.1.0
353 silly fetch manifest color-convert@^2.0.1
354 http fetch GET 200 https://registry.npmjs.org/color-convert 57ms (cache revalidated)
355 silly placeDep ROOT color-convert@2.0.1 OK for: ansi-styles@4.3.0 want: ^2.0.1
356 silly fetch manifest color-name@~1.1.4
357 http fetch GET 200 https://registry.npmjs.org/color-name 55ms (cache revalidated)
358 silly placeDep ROOT color-name@1.1.4 OK for: color-convert@2.0.1 want: ~1.1.4
359 silly placeDep ROOT path-key@3.1.1 OK for: cross-spawn@7.0.3 want: ^3.1.0
360 silly placeDep ROOT shebang-command@2.0.0 OK for: cross-spawn@7.0.3 want: ^2.0.0
361 silly placeDep ROOT which@2.0.2 OK for: cross-spawn@7.0.3 want: ^2.0.1
362 silly fetch manifest shebang-regex@^3.0.0
363 silly fetch manifest isexe@^2.0.0
364 http fetch GET 200 https://registry.npmjs.org/shebang-regex 44ms (cache revalidated)
365 http fetch GET 200 https://registry.npmjs.org/isexe 45ms (cache revalidated)
366 silly placeDep ROOT ms@2.1.2 OK for: debug@4.3.5 want: 2.1.2
367 silly placeDep ROOT esrecurse@4.3.0 OK for: eslint-scope@8.0.2 want: ^4.3.0
368 silly placeDep ROOT estraverse@5.3.0 OK for: eslint-scope@8.0.2 want: ^5.2.0
369 silly placeDep ROOT acorn@8.12.1 OK for: espree@10.1.0 want: ^8.12.0
370 silly placeDep ROOT acorn-jsx@5.3.2 OK for: espree@10.1.0 want: ^5.3.2
371 silly placeDep ROOT @jest/expect-utils@29.7.0 OK for: expect@29.7.0 want: ^29.7.0
372 silly placeDep ROOT jest-get-type@29.6.3 OK for: expect@29.7.0 want: ^29.6.3
373 silly placeDep ROOT jest-matcher-utils@29.7.0 OK for: expect@29.7.0 want: ^29.7.0
374 silly placeDep ROOT jest-message-util@29.7.0 OK for: expect@29.7.0 want: ^29.7.0
375 silly placeDep ROOT jest-util@29.7.0 OK for: expect@29.7.0 want: ^29.7.0
376 silly fetch manifest jest-diff@^29.7.0
377 silly fetch manifest slash@^3.0.0
378 silly fetch manifest micromatch@^4.0.4
379 silly fetch manifest @jest/types@^29.6.3
380 silly fetch manifest graceful-fs@^4.2.9
381 silly fetch manifest stack-utils@^2.0.3
382 silly fetch manifest @babel/code-frame@^7.12.13
383 silly fetch manifest @types/stack-utils@^2.0.0
384 silly fetch manifest ci-info@^3.2.0
385 silly fetch manifest picomatch@^2.2.3
386 http fetch GET 200 https://registry.npmjs.org/stack-utils 52ms (cache revalidated)
387 http fetch GET 200 https://registry.npmjs.org/slash 55ms (cache revalidated)
388 http fetch GET 200 https://registry.npmjs.org/jest-diff 59ms (cache revalidated)
389 http fetch GET 200 https://registry.npmjs.org/picomatch 66ms (cache revalidated)
390 http fetch GET 200 https://registry.npmjs.org/@babel%2fcode-frame 69ms (cache revalidated)
391 http fetch GET 200 https://registry.npmjs.org/ci-info 72ms (cache revalidated)
392 http fetch GET 200 https://registry.npmjs.org/micromatch 75ms (cache revalidated)
393 http fetch GET 200 https://registry.npmjs.org/@types%2fstack-utils 92ms (cache revalidated)
394 http fetch GET 200 https://registry.npmjs.org/@jest%2ftypes 94ms (cache revalidated)
395 silly placeDep ROOT reusify@1.0.4 OK for: fastq@1.17.1 want: ^1.0.4
396 silly placeDep ROOT flat-cache@4.0.1 OK for: file-entry-cache@8.0.0 want: ^4.0.0
397 silly fetch manifest flatted@^3.2.9
398 silly fetch manifest keyv@^4.5.4
399 http fetch GET 200 https://registry.npmjs.org/flatted 54ms (cache revalidated)
400 http fetch GET 200 https://registry.npmjs.org/keyv 59ms (cache revalidated)
401 silly placeDep ROOT locate-path@6.0.0 OK for: find-up@5.0.0 want: ^6.0.0
402 silly placeDep ROOT path-exists@4.0.0 OK for: find-up@5.0.0 want: ^4.0.0
403 silly fetch manifest p-locate@^5.0.0
404 http fetch GET 200 https://registry.npmjs.org/p-locate 50ms (cache revalidated)
405 silly placeDep ROOT flatted@3.3.1 OK for: flat-cache@4.0.1 want: ^3.2.9
406 silly placeDep ROOT keyv@4.5.4 OK for: flat-cache@4.0.1 want: ^4.5.4
407 silly fetch manifest json-buffer@3.0.1
408 http fetch GET 200 https://registry.npmjs.org/json-buffer 50ms (cache revalidated)
409 silly placeDep ROOT graceful-fs@4.2.11 OK for: fs-extra@7.0.1 want: ^4.1.2
410 silly placeDep ROOT jsonfile@4.0.0 OK for: fs-extra@7.0.1 want: ^4.0.0
411 silly placeDep ROOT universalify@0.1.2 OK for: fs-extra@7.0.1 want: ^0.1.0
412 silly placeDep ROOT parent-module@1.0.1 OK for: import-fresh@3.3.0 want: ^1.0.0
413 silly placeDep ROOT resolve-from@4.0.0 OK for: import-fresh@3.3.0 want: ^4.0.0
414 silly fetch manifest callsites@^3.0.0
415 http fetch GET 200 https://registry.npmjs.org/callsites 47ms (cache revalidated)
416 silly placeDep ROOT is-extglob@2.1.1 OK for: is-glob@4.0.3 want: ^2.1.1
417 silly placeDep ROOT jest-diff@29.7.0 OK for: jest-matcher-utils@29.7.0 want: ^29.7.0
418 silly fetch manifest diff-sequences@^29.6.3
419 http fetch GET 200 https://registry.npmjs.org/diff-sequences 71ms (cache revalidated)
420 silly placeDep ROOT diff-sequences@29.6.3 OK for: jest-diff@29.7.0 want: ^29.6.3
421 silly placeDep ROOT @babel/code-frame@7.24.7 OK for: jest-message-util@29.7.0 want: ^7.12.13
422 silly placeDep ROOT @jest/types@29.6.3 OK for: jest-message-util@29.7.0 want: ^29.6.3
423 silly placeDep ROOT @types/stack-utils@2.0.3 OK for: jest-message-util@29.7.0 want: ^2.0.0
424 silly placeDep ROOT micromatch@4.0.7 OK for: jest-message-util@29.7.0 want: ^4.0.4
425 silly placeDep ROOT slash@3.0.0 OK for: jest-message-util@29.7.0 want: ^3.0.0
426 silly placeDep ROOT stack-utils@2.0.6 OK for: jest-message-util@29.7.0 want: ^2.0.3
427 silly fetch manifest picocolors@^1.0.0
428 silly fetch manifest @babel/highlight@^7.24.7
429 silly fetch manifest @types/yargs@^17.0.8
430 silly fetch manifest @types/istanbul-reports@^3.0.0
431 silly fetch manifest @types/istanbul-lib-coverage@^2.0.0
432 silly fetch manifest braces@^3.0.3
433 silly fetch manifest picomatch@^2.3.1
434 silly fetch manifest escape-string-regexp@^2.0.0
435 http fetch GET 200 https://registry.npmjs.org/picocolors 57ms (cache revalidated)
436 http fetch GET 200 https://registry.npmjs.org/@babel%2fhighlight 69ms (cache revalidated)
437 http fetch GET 200 https://registry.npmjs.org/braces 72ms (cache revalidated)
438 http fetch GET 200 https://registry.npmjs.org/@types%2fistanbul-lib-coverage 76ms (cache revalidated)
439 http fetch GET 200 https://registry.npmjs.org/@types%2fyargs 78ms (cache revalidated)
440 http fetch GET 200 https://registry.npmjs.org/@types%2fistanbul-reports 85ms (cache revalidated)
441 silly placeDep ROOT @babel/highlight@7.24.7 OK for: @babel/code-frame@7.24.7 want: ^7.24.7
442 silly placeDep ROOT picocolors@1.0.1 OK for: @babel/code-frame@7.24.7 want: ^1.0.0
443 silly fetch manifest chalk@^2.4.2
444 silly fetch manifest js-tokens@^4.0.0
445 silly fetch manifest @babel/helper-validator-identifier@^7.24.7
446 http fetch GET 200 https://registry.npmjs.org/@babel%2fhelper-validator-identifier 57ms (cache revalidated)
447 http fetch GET 200 https://registry.npmjs.org/js-tokens 101ms (cache revalidated)
448 silly placeDep ROOT @babel/helper-validator-identifier@7.24.7 OK for: @babel/highlight@7.24.7 want: ^7.24.7
449 silly placeDep node_modules/@babel/highlight chalk@2.4.2 OK for: @babel/highlight@7.24.7 want: ^2.4.2
450 silly placeDep ROOT js-tokens@4.0.0 OK for: @babel/highlight@7.24.7 want: ^4.0.0
451 silly fetch manifest ansi-styles@^3.2.1
452 silly fetch manifest supports-color@^5.3.0
453 silly fetch manifest escape-string-regexp@^1.0.5
454 silly placeDep ROOT @jest/schemas@29.6.3 OK for: @jest/types@29.6.3 want: ^29.6.3
455 silly placeDep ROOT @types/istanbul-lib-coverage@2.0.6 OK for: @jest/types@29.6.3 want: ^2.0.0
456 silly placeDep ROOT @types/istanbul-reports@3.0.4 OK for: @jest/types@29.6.3 want: ^3.0.0
457 silly placeDep ROOT @types/node@20.14.11 OK for: @jest/types@29.6.3 want: *
458 silly placeDep ROOT @types/yargs@17.0.32 OK for: @jest/types@29.6.3 want: ^17.0.8
459 silly fetch manifest @sinclair/typebox@^0.27.8
460 silly fetch manifest @types/istanbul-lib-report@*
461 silly fetch manifest undici-types@~5.26.4
462 silly fetch manifest @types/yargs-parser@*
463 http fetch GET 200 https://registry.npmjs.org/undici-types 78ms (cache revalidated)
464 http fetch GET 200 https://registry.npmjs.org/@types%2fistanbul-lib-report 80ms (cache revalidated)
465 http fetch GET 200 https://registry.npmjs.org/@types%2fyargs-parser 81ms (cache revalidated)
466 http fetch GET 200 https://registry.npmjs.org/@sinclair%2ftypebox 143ms (cache revalidated)
467 silly placeDep ROOT @sinclair/typebox@0.27.8 OK for: @jest/schemas@29.6.3 want: ^0.27.8
468 silly placeDep ROOT @types/istanbul-lib-report@3.0.3 OK for: @types/istanbul-reports@3.0.4 want: *
469 silly placeDep ROOT undici-types@5.26.5 OK for: @types/node@20.14.11 want: ~5.26.4
470 silly placeDep ROOT @types/yargs-parser@21.0.3 OK for: @types/yargs@17.0.32 want: *
471 silly placeDep ROOT ci-info@3.9.0 OK for: jest-util@29.7.0 want: ^3.2.0
472 silly placeDep ROOT picomatch@2.3.1 OK for: jest-util@29.7.0 want: ^2.2.3
473 silly placeDep ROOT esprima@4.0.1 OK for: js-yaml@3.13.1 want: ^4.0.0
474 silly placeDep ROOT json-buffer@3.0.1 OK for: keyv@4.5.4 want: 3.0.1
475 silly placeDep ROOT prelude-ls@1.2.1 OK for: levn@0.4.1 want: ^1.2.1
476 silly placeDep ROOT type-check@0.4.0 OK for: levn@0.4.1 want: ~0.4.0
477 silly placeDep ROOT p-locate@5.0.0 OK for: locate-path@6.0.0 want: ^5.0.0
478 silly fetch manifest p-limit@^3.0.2
479 http fetch GET 200 https://registry.npmjs.org/p-limit 54ms (cache revalidated)
480 silly placeDep ROOT braces@3.0.3 OK for: micromatch@4.0.7 want: ^3.0.3
481 silly fetch manifest fill-range@^7.1.1
482 http fetch GET 200 https://registry.npmjs.org/fill-range 52ms (cache revalidated)
483 silly placeDep ROOT fill-range@7.1.1 OK for: braces@3.0.3 want: ^7.1.1
484 silly fetch manifest to-regex-range@^5.0.1
485 http fetch GET 200 https://registry.npmjs.org/to-regex-range 45ms (cache revalidated)
486 silly placeDep ROOT to-regex-range@5.0.1 OK for: fill-range@7.1.1 want: ^5.0.1
487 silly fetch manifest is-number@^7.0.0
488 http fetch GET 200 https://registry.npmjs.org/is-number 60ms (cache revalidated)
489 silly placeDep ROOT brace-expansion@1.1.11 OK for: minimatch@3.0.8 want: ^1.1.7
490 silly fetch manifest balanced-match@^1.0.0
491 silly fetch manifest concat-map@0.0.1
492 http fetch GET 200 https://registry.npmjs.org/balanced-match 46ms (cache revalidated)
493 http fetch GET 200 https://registry.npmjs.org/concat-map 48ms (cache revalidated)
494 silly placeDep ROOT balanced-match@1.0.2 OK for: brace-expansion@1.1.11 want: ^1.0.0
495 silly placeDep ROOT concat-map@0.0.1 OK for: brace-expansion@1.1.11 want: 0.0.1
496 silly placeDep ROOT deep-is@0.1.4 OK for: optionator@0.9.4 want: ^0.1.3
497 silly placeDep ROOT fast-levenshtein@2.0.6 OK for: optionator@0.9.4 want: ^2.0.6
498 silly placeDep ROOT word-wrap@1.2.5 OK for: optionator@0.9.4 want: ^1.2.5
499 silly placeDep ROOT p-limit@3.1.0 OK for: p-locate@5.0.0 want: ^3.0.2
500 silly fetch manifest yocto-queue@^0.1.0
501 http fetch GET 200 https://registry.npmjs.org/yocto-queue 64ms (cache revalidated)
502 silly placeDep ROOT yocto-queue@0.1.0 OK for: p-limit@3.1.0 want: ^0.1.0
503 silly placeDep ROOT callsites@3.1.0 OK for: parent-module@1.0.1 want: ^3.0.0
504 silly placeDep node_modules/pretty-format ansi-styles@5.2.0 OK for: pretty-format@29.7.0 want: ^5.0.0
505 silly placeDep ROOT react-is@18.3.1 OK for: pretty-format@29.7.0 want: ^18.0.0
506 silly placeDep ROOT is-core-module@2.15.0 OK for: resolve@1.22.8 want: ^2.13.0
507 silly placeDep ROOT path-parse@1.0.7 OK for: resolve@1.22.8 want: ^1.0.7
508 silly placeDep ROOT supports-preserve-symlinks-flag@1.0.0 OK for: resolve@1.22.8 want: ^1.0.0
509 silly fetch manifest hasown@^2.0.2
510 http fetch GET 200 https://registry.npmjs.org/hasown 50ms (cache revalidated)
511 silly placeDep ROOT hasown@2.0.2 OK for: is-core-module@2.15.0 want: ^2.0.2
512 silly fetch manifest function-bind@^1.1.2
513 http fetch GET 200 https://registry.npmjs.org/function-bind 49ms (cache revalidated)
514 silly placeDep ROOT function-bind@1.1.2 OK for: hasown@2.0.2 want: ^1.1.2
515 silly placeDep ROOT queue-microtask@1.2.3 OK for: run-parallel@1.2.0 want: ^1.2.2
516 silly placeDep ROOT lru-cache@6.0.0 OK for: semver@7.5.4 want: ^6.0.0
517 silly fetch manifest yallist@^4.0.0
518 http fetch GET 200 https://registry.npmjs.org/yallist 40ms (cache revalidated)
519 silly placeDep ROOT yallist@4.0.0 OK for: lru-cache@6.0.0 want: ^4.0.0
520 silly placeDep ROOT shebang-regex@3.0.0 OK for: shebang-command@2.0.0 want: ^3.0.0
521 silly placeDep node_modules/stack-utils escape-string-regexp@2.0.0 OK for: stack-utils@2.0.6 want: ^2.0.0
522 silly placeDep ROOT ansi-regex@5.0.1 OK for: strip-ansi@6.0.1 want: ^5.0.1
523 silly placeDep ROOT has-flag@4.0.0 OK for: supports-color@8.1.1 want: ^4.0.0
524 silly placeDep ROOT is-number@7.0.0 OK for: to-regex-range@5.0.1 want: ^7.0.0
525 silly placeDep ROOT punycode@2.3.1 OK for: uri-js@4.4.1 want: ^2.1.0
526 silly placeDep ROOT isexe@2.0.0 OK for: which@2.0.2 want: ^2.0.0
527 silly placeDep node_modules/@babel/highlight ansi-styles@3.2.1 OK for: chalk@2.4.2 want: ^3.2.1
528 silly placeDep node_modules/@babel/highlight escape-string-regexp@1.0.5 OK for: chalk@2.4.2 want: ^1.0.5
529 silly placeDep node_modules/@babel/highlight supports-color@5.5.0 OK for: chalk@2.4.2 want: ^5.3.0
530 silly fetch manifest color-convert@^1.9.0
531 silly fetch manifest has-flag@^3.0.0
532 silly placeDep node_modules/@babel/highlight color-convert@1.9.3 OK for: ansi-styles@3.2.1 want: ^1.9.0
533 silly fetch manifest color-name@1.1.3
534 silly placeDep node_modules/@babel/highlight color-name@1.1.3 OK for: color-convert@1.9.3 want: 1.1.3
535 silly placeDep node_modules/@babel/highlight has-flag@3.0.0 OK for: supports-color@5.5.0 want: ^3.0.0
536 silly placeDep ROOT fast-json-stable-stringify@2.1.0 OK for: ajv@6.12.6 want: ^2.0.0
537 silly placeDep node_modules/@eslint/eslintrc json-schema-traverse@0.4.1 OK for: ajv@6.12.6 want: ^0.4.1
538 silly placeDep node_modules/@eslint/eslintrc argparse@2.0.1 OK for: js-yaml@4.1.0 want: ^2.0.1
539 silly placeDep node_modules/eslint json-schema-traverse@0.4.1 OK for: ajv@6.12.6 want: ^0.4.1
540 silly reify moves {}
541 info ok
542 error Exit handler never called!
543 error This is an error with npm itself. Please report this error at:
544 error     <https://github.com/npm/cli/issues>
545 silly unfinished npm timer command:i 1721317663249
546 silly unfinished npm timer reify 1721317663251
547 silly unfinished npm timer reify:unpack 1721317667935
548 silly unfinished npm timer reifyNode:node_modules/typescript 1721317667936
549 silly unfinished npm timer reifyNode:node_modules/lodash 1721317667936
550 error A complete log of this run can be found in: /Users/wharney/.npm/_logs/2024-07-18T15_47_42_983Z-debug-0.log

@wraithgar
Copy link
Member

Exit handler never called means that the crash is happening out-of-band to npm's event loop, which shuts down the process prematurely and means npm never sees it, nor can it log it. This isn't something that's going to be easy to debug from npm itself.

I will see if I can reproduce it working w/ npm 10.6.0 in the latest Node.js, thanks.

cpcallen added a commit to google/blockly that referenced this issue Jul 18, 2024
@RedYetiDev
Copy link

Based on NODE_DEBUG=*, the error originates from lib/cli/exit-handler.js (line 95).

This suggests that https://github.com/npm/cli/blob/9214be9ed8779493e00d193e36a930918a30be64/lib/cli/entry.js is not invoking .exit().

Several potential points exist where the .exit call could be made. However, NODE_DEBUG logs show that

const updateNotifier = require('./update-notifier.js')
is reached, as indicated by this log entry:

MODULE 24760: Module._load REQUEST ./update-notifier.js parent: C:\XYZ\lib\cli\entry.js

Additionally, the log shows that

const Arborist = require('@npmcli/arborist')
was reached.

@wraithgar
Copy link
Member

@RedYetiDev yes, that is what causes this message. You can read all about this here.

It's never straightforward. There are fewer and fewer callbacks in the code, so this is increasingly caused by If a Promise rejects without being handled. At this point it would have to be pretty deep in the code, and something that doesn't usually happen, to pop up like this now.

@wraithgar
Copy link
Member

I will see if I can reproduce it working w/ npm 10.6.0 in the latest Node.js, thanks.

I still get the error in npm@10.6.0 using the example repo in this issue.

The fact that it worked even once means it may be a race condition based on volume of fs operations, but that's pure conjecture.

@RedYetiDev
Copy link

RedYetiDev commented Jul 18, 2024

The fact that it worked even once means it may be a race condition based on volume of fs operations, but that's pure conjecture.

I woudn't be suprised if that was the case. The FastApi, which appears to be the root cause of the error is only used (from what I can tell) when a large number of fs operations are in use.

@wraithgar
Copy link
Member

Thanks @RedYetiDev, unless someone brings us something largely net new we're gonna wait for the fix to FastApi in Node.js.

@RedYetiDev
Copy link

RedYetiDev commented Jul 18, 2024

Currently, there are two proposed solutions to the problem:

  1. Revert "fs: add v8 fast api to closeSync" nodejs/node#53904 reverts the commit that introduced the regressions. AFAICT this resolves all errors.
  2. fs: fix not found close creation context nodejs/node#53910 changes the way the binding context is gotten. AFAICT this does not resolve the issue.

Tested with:

# Remove previous data
rm -r node_modules || true
# Install large amounts of files, use $1 as the NODE path.
PATH=.$1:$PATH npm i @microsoft/api-documenter @microsoft/api-extractor @types/jest eslint --no-progress

@jakecastelli
Copy link

Hi guys, just trying to add a little bit of findings here, I built v22.5 locally on my apple m1

System info
OS: macOS 13.1
CPU: (8) arm64 Apple M1 Pro

and couldn't reproduce this issue (run multiple times)

; node bin location = /usr/local/bin/node
; node version = v22.5.0
; npm local prefix = /Users/jake/projects/oss/npm-cli-7657/divviup-api/app
; npm version = 10.8.1
; cwd = /Users/jake/projects/oss/npm-cli-7657/divviup-api/app
; HOME = /Users/jake
; Run `npm config ls -l` to show all defaults.

Also tried with hyperformula project on dd16991c9541007b8b87bd6386d540a2122c60c6, didn't see the above issue.

I think from what I've seen so far the crashes are related to pipelines / workflows that use Linux.

@milaninfy milaninfy mentioned this issue Jul 18, 2024
2 tasks
@RedYetiDev
Copy link

I've been able to reproduce on both Windows and Linux. The trick is you need to (AFAICT) have a lot of files to install into node_modules.

@jaestebang
Copy link

I have gotten the same error in a workflow action with Node v22.5.0, so I've solved it temporary changing its version by 22.4.x

Screenshot 2024-07-18 at 12 32 25 PM

Screenshot 2024-07-18 at 12 33 35 PM

@npm npm locked and limited conversation to collaborators Jul 18, 2024
@wraithgar
Copy link
Member

wraithgar commented Jul 18, 2024

I audited the use of fs.closeSync in npm and from what I can tell that should be getting called in any volume during an install:

Uses of closeSync in npm:

  • write-file-atomic
    Both of these are during writeFileSync, both are in a try/catch/finally context
    this is used only by bin-links, and only during dos2Unix, commenting this out does not fix the problem

  • cross-spawn
    Used by signal-exit and foreground-child, but is only used in windows, so this doesn't account for failures in osx and linux.

  • node-gyp
    used by @npmcli/run-script to determine if scripts need to be ran on install. A log is emitted before arborist calls this during reify, and we don't see this during the failures. This is not the culprit.

  • graceful-fs
    This is the closeSync polyfill that is called any time fs.closeSync is called. Removing this polyFill does not fix the problem.

  • fs-minipass
    Used for both ReadStreamSync and WriteStreamSync
    cli's log file writer uses WriteStreamSync, but the close event doesn't happen until after this error.
    cacache and pacote do not use WriteStreamSync or ReadStreamSync
    Used by tar as a (bundled dep), see entry for tar
    tar uses bundled fs-minipass ReadStreamSync during extract if sync is set to true. Neither cacache, pacote, nor npm call tar with the sync parameter set.

  • tar
    Used during tar.t/tar.list, but only if sync is true. Neither cacache, pacote, nor npm call this during install
    Used during tar.r/tar.replace, but only if sync is true. Neither cacache, pacote, nor npm call this during install
    Used during tar.Unpack.Sync. Nothing in npm calls this
    Used during tar.WriteEntry.Sync. Nothing in npm calls this

@wraithgar
Copy link
Member

@RedYetiDev did a trace via --trace-sync-io and got this traceback

(node:91423) WARNING: Detected use of sync API
    at processChunkSync (node:zlib:459:12)
    at ZlibBase._processChunk (node:zlib:434:12)
    at write (/usr/local/lib/node_modules/npm/node_modules/minizlib/index.js:147:30)
    at flush (/usr/local/lib/node_modules/npm/node_modules/minizlib/index.js:105:10)
    at end (/usr/local/lib/node_modules/npm/node_modules/minizlib/index.js:111:10)
    at end (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:544:21)
    at end (/usr/local/lib/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass/index.js:75:17)
    at [emitEnd2] (/usr/local/lib/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass/index.js:522:9)
    at [emitEnd] (/usr/local/lib/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass/index.js:507:21)
    at emit (/usr/local/lib/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass/index.js:458:27)

I will see if this helps me figure out where sync is happening.

@wraithgar
Copy link
Member

ZlibBase._processChunk seems to be a very good clue in light of this comment in minizlib:

https://github.com/isaacs/minizlib/blob/3412623e9470bb72827c8a61e685140b5ee7b8a0/index.js#L133-L134

    // _processChunk tries to .close() the native handle after it's done, so we
    // intercept that by temporarily making it a no-op.

If zlib is calling close synchronously under the hood it could be where the error is happening.

@wraithgar
Copy link
Member

Tracing from minizlib down into node zlib.

In _processChunk if no callback is given zlib uses processChunkSync

minizlib calls _processChunk with no callback

Is is inside processChunkSync that we find a writeSync called on the handle. This is not an fs handle, but a zlib internal.

I don't think this is related, it just happens to be a synchronous call in the code.

@wraithgar
Copy link
Member

This was fixed in Node.js v22.5.1 nodejs/node#53902 (comment)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Bug thing that needs fixing Needs Triage needs review for next steps
Projects
None yet
Development

No branches or pull requests