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

build(package): pin typescript-eslint/parser for supported node.js #63424

Merged
merged 2 commits into from Mar 18, 2024

Conversation

kwonoj
Copy link
Contributor

@kwonoj kwonoj commented Mar 18, 2024

What

typescript-eslint/typescript-eslint#8671 introduces a change to enforce node.js >= 18.18.0. This is technically breaking changes, and affects us as we support 18.17.0 still (https://github.com/vercel/next.js/blob/canary/package.json#L254).

As a workaround, pin dep version to avoid 7.3.0 - later when we lift our engines, can remove those.

Closes PACK-2763

Copy link
Member

@styfle styfle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kwonoj You need to run pnpm install to regenerate the lockfile

@kwonoj kwonoj requested review from a team as code owners March 18, 2024 18:54
@ijjk
Copy link
Member

ijjk commented Mar 18, 2024

Failing test suites

Commit: c648673

pnpm test test/integration/amphtml/test/index.test.js

  • AMP Usage > production mode > should have amp optimizer in trace
  • AMP Usage > production mode > With AMP context > should render the normal page that uses the AMP hook
  • AMP Usage > production mode > With AMP context > should render the AMP page that uses the AMP hook
  • AMP Usage > production mode > With AMP context > should render nested normal page with AMP hook
  • AMP Usage > production mode > With AMP context > should render nested AMP page with AMP hook
  • AMP Usage > production mode > With basic AMP usage > should render the page as valid AMP
  • AMP Usage > production mode > With basic AMP usage > should render the page without leaving render target
  • AMP Usage > production mode > With basic AMP usage > should not output client pages for AMP only
  • AMP Usage > production mode > With basic AMP usage > should not output client pages for AMP only with config exported after declaration
  • AMP Usage > production mode > With basic AMP usage > should drop custom scripts
  • AMP Usage > production mode > With basic AMP usage > should not drop custom amp scripts
  • AMP Usage > production mode > With basic AMP usage > should optimize clean
  • AMP Usage > production mode > With basic AMP usage > should auto import extensions
  • AMP Usage > production mode > With basic usage > should render the page
  • AMP Usage > production mode > canonical amphtml > should render link rel amphtml
  • AMP Usage > production mode > canonical amphtml > should render amphtml from provided rel link
  • AMP Usage > production mode > canonical amphtml > should render link rel amphtml with existing query
  • AMP Usage > production mode > canonical amphtml > should render the AMP page that uses the AMP hook
  • AMP Usage > production mode > canonical amphtml > should render a canonical regardless of amp-only status (explicit)
  • AMP Usage > production mode > canonical amphtml > should not render amphtml link tag with no AMP page
  • AMP Usage > production mode > canonical amphtml > should remove conflicting amp tags
  • AMP Usage > production mode > canonical amphtml > should allow manually setting canonical
  • AMP Usage > production mode > canonical amphtml > should allow manually setting amphtml rel
  • AMP Usage > production mode > combined styles > should combine style tags
  • AMP Usage > production mode > combined styles > should remove sourceMaps from styles
Expand output

● AMP Usage › production mode › should have amp optimizer in trace

ENOENT: no such file or directory, open '/root/actions-runner/_work/next.js/next.js/test/integration/amphtml/.next/next-server.js.nft.json'

  54 |     it('should have amp optimizer in trace', async () => {
  55 |       const trace = JSON.parse(
> 56 |         readFileSync(join(appDir, '.next/next-server.js.nft.json'), 'utf8')
     |                     ^
  57 |       )
  58 |       expect(
  59 |         trace.files.some((file) =>

  at Object.<anonymous> (integration/amphtml/test/index.test.js:56:21)

● AMP Usage › production mode › With basic usage › should render the page

FetchError: request to http://localhost:40525/ failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should render the page as valid AMP

FetchError: request to http://localhost:40525/?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should render the page without leaving render target

FetchError: request to http://localhost:40525/special-chars failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should not output client pages for AMP only

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:40525/nav
Call log:
  - navigating to "http://localhost:40525/nav", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (integration/amphtml/test/index.test.js:94:25)

● AMP Usage › production mode › With basic AMP usage › should not output client pages for AMP only with config exported after declaration

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:40525/nav
Call log:
  - navigating to "http://localhost:40525/nav", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (integration/amphtml/test/index.test.js:103:25)

● AMP Usage › production mode › With basic AMP usage › should drop custom scripts

FetchError: request to http://localhost:40525/custom-scripts failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should not drop custom amp scripts

FetchError: request to http://localhost:40525/amp-script?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should optimize clean

FetchError: request to http://localhost:40525/only-amp failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With basic AMP usage › should auto import extensions

FetchError: request to http://localhost:40525/auto-import failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With AMP context › should render the normal page that uses the AMP hook

FetchError: request to http://localhost:40525/use-amp-hook failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With AMP context › should render the AMP page that uses the AMP hook

FetchError: request to http://localhost:40525/use-amp-hook?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With AMP context › should render nested normal page with AMP hook

FetchError: request to http://localhost:40525/nested failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › With AMP context › should render nested AMP page with AMP hook

FetchError: request to http://localhost:40525/nested?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should render link rel amphtml

FetchError: request to http://localhost:40525/use-amp-hook failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should render amphtml from provided rel link

FetchError: request to http://localhost:40525/use-amp-hook.amp failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should render link rel amphtml with existing query

FetchError: request to http://localhost:40525/use-amp-hook?hello=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should render the AMP page that uses the AMP hook

FetchError: request to http://localhost:40525/use-amp-hook?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should render a canonical regardless of amp-only status (explicit)

FetchError: request to http://localhost:40525/only-amp failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should not render amphtml link tag with no AMP page

FetchError: request to http://localhost:40525/normal failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should remove conflicting amp tags

FetchError: request to http://localhost:40525/conflicting-tag?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should allow manually setting canonical

FetchError: request to http://localhost:40525/manual-rels?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › canonical amphtml › should allow manually setting amphtml rel

FetchError: request to http://localhost:40525/manual-rels failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › combined styles › should combine style tags

FetchError: request to http://localhost:40525/styled?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

● AMP Usage › production mode › combined styles › should remove sourceMaps from styles

FetchError: request to http://localhost:40525/styled?amp=1 failed, reason: connect ECONNREFUSED 127.0.0.1:40525

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/lib/index.js:1491:11)

Read more about building and testing Next.js in contributing.md.

TURBOPACK=1 pnpm test test/integration/create-next-app/package-manager.test.ts (turbopack)

  • should use Yarn as the package manager on supplying --use-yarn

  • should infer yarn as the package manager

Expand output

● should use Yarn as the package manager on supplying --use-yarn

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  80 |   for (const file of files) {
  81 |     try {
> 82 |       expect(existsSync(resolve(projectRoot, file))).toBe(true)
     |                                                      ^
  83 |     } catch (err) {
  84 |       require('console').error(
  85 |         `missing expected file ${file}`,

  at toBe (integration/create-next-app/lib/utils.ts:82:54)
  at integration/create-next-app/package-manager.test.ts:124:28
  at useTempDir (lib/use-temp-dir.ts:24:5)
  at Object.<anonymous> (integration/create-next-app/package-manager.test.ts:104:3)

● should infer yarn as the package manager

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  80 |   for (const file of files) {
  81 |     try {
> 82 |       expect(existsSync(resolve(projectRoot, file))).toBe(true)
     |                                                      ^
  83 |     } catch (err) {
  84 |       require('console').error(
  85 |         `missing expected file ${file}`,

  at toBe (integration/create-next-app/lib/utils.ts:82:54)
  at integration/create-next-app/package-manager.test.ts:438:28
  at useTempDir (lib/use-temp-dir.ts:24:5)
  at Object.<anonymous> (integration/create-next-app/package-manager.test.ts:410:3)

Read more about building and testing Next.js in contributing.md.

Copy link
Member

@styfle styfle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@ijjk
Copy link
Member

ijjk commented Mar 18, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js pin-eslint-parser Change
buildDuration 13.8s 13.9s ⚠️ +121ms
buildDurationCached 8.4s 6.4s N/A
nodeModulesSize 198 MB 198 MB
nextStartRea..uration (ms) 440ms 427ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js pin-eslint-parser Change
2453-HASH.js gzip 30.5 kB 30.5 kB N/A
3304.HASH.js gzip 181 B 181 B
3f784ff6-HASH.js gzip 53.7 kB 53.7 kB N/A
8299-HASH.js gzip 5.04 kB 5.04 kB N/A
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 242 B 241 B N/A
main-HASH.js gzip 32.2 kB 32.2 kB N/A
webpack-HASH.js gzip 1.68 kB 1.68 kB N/A
Overall change 45.4 kB 45.4 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js pin-eslint-parser Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js pin-eslint-parser Change
_app-HASH.js gzip 196 B 197 B N/A
_error-HASH.js gzip 184 B 184 B
amp-HASH.js gzip 505 B 505 B
css-HASH.js gzip 324 B 325 B N/A
dynamic-HASH.js gzip 2.5 kB 2.5 kB N/A
edge-ssr-HASH.js gzip 258 B 258 B
head-HASH.js gzip 352 B 352 B
hooks-HASH.js gzip 370 B 371 B N/A
image-HASH.js gzip 4.21 kB 4.21 kB
index-HASH.js gzip 259 B 259 B
link-HASH.js gzip 2.67 kB 2.67 kB N/A
routerDirect..HASH.js gzip 314 B 312 B N/A
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 309 B 309 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 6.57 kB 6.57 kB
Client Build Manifests
vercel/next.js canary vercel/next.js pin-eslint-parser Change
_buildManifest.js gzip 481 B 484 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js pin-eslint-parser Change
index.html gzip 528 B 529 B N/A
link.html gzip 541 B 542 B N/A
withRouter.html gzip 523 B 523 B
Overall change 523 B 523 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js pin-eslint-parser Change
edge-ssr.js gzip 95.1 kB 95.1 kB N/A
page.js gzip 3.04 kB 3.04 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js pin-eslint-parser Change
middleware-b..fest.js gzip 626 B 624 B N/A
middleware-r..fest.js gzip 151 B 151 B
middleware.js gzip 25.5 kB 25.5 kB N/A
edge-runtime..pack.js gzip 839 B 839 B
Overall change 990 B 990 B
Next Runtimes
vercel/next.js canary vercel/next.js pin-eslint-parser Change
app-page-exp...dev.js gzip 171 kB 171 kB
app-page-exp..prod.js gzip 96.6 kB 96.6 kB
app-page-tur..prod.js gzip 98.3 kB 98.3 kB
app-page-tur..prod.js gzip 92.8 kB 92.8 kB
app-page.run...dev.js gzip 149 kB 149 kB
app-page.run..prod.js gzip 91.3 kB 91.3 kB
app-route-ex...dev.js gzip 21.3 kB 21.3 kB
app-route-ex..prod.js gzip 15 kB 15 kB
app-route-tu..prod.js gzip 15 kB 15 kB
app-route-tu..prod.js gzip 14.8 kB 14.8 kB
app-route.ru...dev.js gzip 21 kB 21 kB
app-route.ru..prod.js gzip 14.8 kB 14.8 kB
pages-api-tu..prod.js gzip 9.52 kB 9.52 kB
pages-api.ru...dev.js gzip 9.8 kB 9.8 kB
pages-api.ru..prod.js gzip 9.52 kB 9.52 kB
pages-turbo...prod.js gzip 22.3 kB 22.3 kB
pages.runtim...dev.js gzip 22.9 kB 22.9 kB
pages.runtim..prod.js gzip 22.3 kB 22.3 kB
server.runti..prod.js gzip 50.6 kB 50.6 kB
Overall change 948 kB 948 kB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js pin-eslint-parser Change
0.pack gzip 1.55 MB 1.56 MB ⚠️ +1.18 kB
index.pack gzip 105 kB 106 kB ⚠️ +371 B
Overall change 1.66 MB 1.66 MB ⚠️ +1.55 kB
Diff details
Diff for middleware.js

Diff too large to display

Commit: c648673

@styfle styfle merged commit 2cd58bb into canary Mar 18, 2024
64 of 67 checks passed
@styfle styfle deleted the pin-eslint-parser branch March 18, 2024 19:43
@github-actions github-actions bot added the locked label Apr 2, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants