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

Attach exports information in SWC transforms #45261

Merged
merged 1 commit into from Jan 25, 2023
Merged

Attach exports information in SWC transforms #45261

merged 1 commit into from Jan 25, 2023

Conversation

shuding
Copy link
Member

@shuding shuding commented Jan 25, 2023

Fixes NEXT-414

Bug

  • Related issues linked using fixes #number
  • Integration tests added
  • Errors have a helpful link attached, see contributing.md

Feature

  • Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
  • Related issues linked using fixes #number
  • e2e tests added
  • Documentation added
  • Telemetry added. In case of a feature if it's used or not.
  • Errors have a helpful link attached, see contributing.md

Documentation / Examples

  • Make sure the linting passes by running pnpm build && pnpm lint
  • The "examples guidelines" are followed from our contributing doc

@shuding shuding requested review from timneutkens, ijjk and a team as code owners January 25, 2023 11:22
@ijjk ijjk added created-by: Next.js team PRs by the Next.js team type: next labels Jan 25, 2023
@ijjk
Copy link
Member

ijjk commented Jan 25, 2023

Failing test suites

Commit: e4bed39

pnpm testheadless test/integration/api-support/test/index.test.js

  • API routes > Server support > should warn with configured size if response body is larger than configured size
  • API routes > dev support > should not warn if response body is larger than 4MB with responseLimit config = false
  • API routes > dev support > should warn with configured size if response body is larger than configured size
  • API routes > dev support > should show false positive warning if not using externalResolver flag
  • API routes > dev support > should not show warning if using externalResolver flag
Expand output

● API routes › dev support › should not warn if response body is larger than 4MB with responseLimit config = false

FetchError: request to http://localhost:39521/api/large-response-with-config failed, reason: read ECONNRESET

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

● API routes › dev support › should warn with configured size if response body is larger than configured size

thrown: "Exceeded timeout of 90000 ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."

  493 |   })
  494 |
> 495 |   it('should warn with configured size if response body is larger than configured size', async () => {
      |   ^
  496 |     let res = await fetchViaHTTP(
  497 |       appPort,
  498 |       '/api/large-response-with-config-size'

  at runTests (integration/api-support/test/index.test.js:495:3)
  at integration/api-support/test/index.test.js:607:5
  at integration/api-support/test/index.test.js:595:3
  at Object.<anonymous> (integration/api-support/test/index.test.js:594:1)

● API routes › dev support › should show false positive warning if not using externalResolver flag

expect(received).toContain(expected) // indexOf

Expected substring: "API resolved without sending a response for /api/external-resolver-false-positive, this may result in stalled requests."
Received string:    "A body was attempted to be set with a 204 statusCode for /api/status-204?invalid=1, this is invalid and the body was ignored.
See more info here https://nextjs.org/docs/messages/invalid-api-status-body
error - Error: User error

  17 | });
  18 |
> 19 |
     | ^
  20 | /***/ })
  21 |
  22 | };

  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/user-error.js:19:11)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/user-error'
  }
  error - Error: User error
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/user-error-async.js:19:11)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/user-error-async'
  }
  error - Error: Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').
  at Object.redirect (../packages/next/dist/server/api-utils/index.js:33:15)
  at ServerResponse.apiRes.redirect (../packages/next/dist/server/api-utils/node.js:361:59)
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/redirect-error.js:19:9)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/redirect-error'
  }
  error - Error: Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').
  at Object.redirect (../packages/next/dist/server/api-utils/index.js:33:15)
  at ServerResponse.apiRes.redirect (../packages/next/dist/server/api-utils/node.js:361:59)
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/redirect-null.js:19:9)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/redirect-null'
  }
  API response for /api/large-response exceeds 4MB. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit
  API response for /api/large-chunked-response exceeds 4MB. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit
  API resolved without sending a response for /api/test-no-end, this may result in stalled requests.
  "
  at Object.<anonymous> (integration/api-support/test/index.test.js:543:22)

● API routes › dev support › should not show warning if using externalResolver flag

expect(received).not.toContain(expected) // indexOf

Expected substring: not "API resolved without sending a response for /api/external-resolver"
Received string:        "
API resolved without sending a response for /api/external-resolver-false-positive, this may result in stalled requests.
"

  551 |       const apiURL = '/api/external-resolver'
  552 |       const req = await fetchViaHTTP(appPort, apiURL)
> 553 |       expect(stderr.slice(startIdx)).not.toContain(
      |                                          ^
  554 |         `API resolved without sending a response for ${apiURL}`
  555 |       )
  556 |       expect(await req.text()).toBe('hello world')

  at Object.<anonymous> (integration/api-support/test/index.test.js:553:42)

● API routes › Server support › should warn with configured size if response body is larger than configured size

expect(received).toContain(expected) // indexOf

Expected substring: "API response for /api/large-response-with-config-size exceeds 5MB. API Routes are meant to respond quickly."
Received string:    "A body was attempted to be set with a 204 statusCode for /api/status-204?invalid=1, this is invalid and the body was ignored.
See more info here https://nextjs.org/docs/messages/invalid-api-status-body
error - Error: User error

  17 | });
  18 |
> 19 |
     | ^
  20 | /***/ })
  21 |
  22 | };

  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/user-error.js:19:11)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/user-error'
  }
  error - Error: User error
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/user-error-async.js:19:11)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/user-error-async'
  }
  error - Error: Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').
  at Object.redirect (../packages/next/dist/server/api-utils/index.js:33:15)
  at ServerResponse.apiRes.redirect (../packages/next/dist/server/api-utils/node.js:361:59)
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/redirect-error.js:19:9)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/redirect-error'
  }
  error - Error: Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').
  at Object.redirect (../packages/next/dist/server/api-utils/index.js:33:15)
  at ServerResponse.apiRes.redirect (../packages/next/dist/server/api-utils/node.js:361:59)
  at __WEBPACK_DEFAULT_EXPORT__ (integration/api-support/.next/server/pages/api/redirect-null.js:19:9)
  at Object.apiResolver (../packages/next/dist/server/api-utils/node.js:372:15)
  at async DevServer.runApi (../packages/next/dist/server/next-server.js:488:9)
  at async Object.fn (../packages/next/dist/server/next-server.js:751:37)
  at async Router.execute (../packages/next/dist/server/router.js:253:36)
  at async DevServer.run (../packages/next/dist/server/base-server.js:384:29)
  at async DevServer.run (../packages/next/dist/server/dev/next-dev-server.js:741:20)
  at async DevServer.handleRequest (../packages/next/dist/server/base-server.js:322:20) {
    page: '/api/redirect-null'
  }
  API response for /api/large-response exceeds 4MB. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit
  API response for /api/large-chunked-response exceeds 4MB. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit
  API resolved without sending a response for /api/test-no-end, this may result in stalled requests.
  API resolved without sending a response for /api/external-resolver-false-positive, this may result in stalled requests.
  "
  at Object.<anonymous> (integration/api-support/test/index.test.js:501:20)

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

pnpm testheadless test/production/disable-fallback-polyfills/index.test.ts

  • Disable fallback polyfills > Reduced bundle size when polyfills are disabled
Expand output

● Disable fallback polyfills › Reduced bundle size when polyfills are disabled

TypeError: Cannot read properties of null (reading 'groups')

   7 |   function getFirstLoadSize(output: string) {
   8 |     const firstLoadRe = /○ \/\s*(\d*) k?B\s*(?<firstLoad>.*) kB/
>  9 |     return Number(output.match(firstLoadRe).groups.firstLoad)
     |                                ^
  10 |   }
  11 |
  12 |   beforeAll(async () => {

  at getFirstLoadSize (production/disable-fallback-polyfills/index.test.ts:9:32)
  at Object.<anonymous> (production/disable-fallback-polyfills/index.test.ts:51:12)

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

@shuding shuding merged commit 2725a37 into canary Jan 25, 2023
@shuding shuding deleted the shu/c317 branch January 25, 2023 11:52
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 24, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants