Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
7119541 to
9a89990
Compare
bbcd174 to
f8960c2
Compare
9a89990 to
ccad701
Compare
f8960c2 to
b883440
Compare
5ec9f44 to
fe356cf
Compare
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| buildDuration | 23.7s | 20.5s | N/A |
| buildDurationCached | 19s | 16.9s | N/A |
| nodeModulesSize | 393 MB | 393 MB | |
| nextStartRea..uration (ms) | 507ms | 516ms | N/A |
Client Bundles (main, webpack)
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| 5306-HASH.js gzip | 54.3 kB | 54.3 kB | N/A |
| 8276.HASH.js gzip | 169 B | 168 B | N/A |
| 8377-HASH.js gzip | 5.46 kB | 5.46 kB | N/A |
| bccd1874-HASH.js gzip | 53 kB | 53 kB | ✓ |
| framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
| main-app-HASH.js gzip | 245 B | 245 B | ✓ |
| main-HASH.js gzip | 34.6 kB | 34.5 kB | N/A |
| webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
| Overall change | 53.2 kB | 53.2 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
| Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 193 B | 193 B | ✓ |
| _error-HASH.js gzip | 193 B | 193 B | ✓ |
| amp-HASH.js gzip | 512 B | 510 B | N/A |
| css-HASH.js gzip | 343 B | 342 B | N/A |
| dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
| edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
| head-HASH.js gzip | 363 B | 362 B | N/A |
| hooks-HASH.js gzip | 393 B | 392 B | N/A |
| image-HASH.js gzip | 4.59 kB | 4.58 kB | N/A |
| index-HASH.js gzip | 268 B | 268 B | ✓ |
| link-HASH.js gzip | 2.35 kB | 2.35 kB | N/A |
| routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
| script-HASH.js gzip | 397 B | 397 B | ✓ |
| withRouter-HASH.js gzip | 323 B | 326 B | N/A |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 748 B | 747 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| index.html gzip | 522 B | 523 B | N/A |
| link.html gzip | 538 B | 538 B | ✓ |
| withRouter.html gzip | 518 B | 520 B | N/A |
| Overall change | 538 B | 538 B | ✓ |
Edge SSR bundle Size
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 130 kB | 130 kB | N/A |
| page.js gzip | 211 kB | 211 kB | N/A |
| Overall change | 0 B | 0 B | ✓ |
Middleware size
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 676 B | 671 B | N/A |
| middleware-r..fest.js gzip | 155 B | 156 B | N/A |
| middleware.js gzip | 31.3 kB | 31.3 kB | N/A |
| edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
| Overall change | 844 B | 844 B | ✓ |
Next Runtimes
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 394 kB | 394 kB | ✓ |
| app-page-exp..prod.js gzip | 132 kB | 132 kB | ✓ |
| app-page-tur..prod.js gzip | 145 kB | 145 kB | ✓ |
| app-page-tur..prod.js gzip | 141 kB | 141 kB | ✓ |
| app-page.run...dev.js gzip | 381 kB | 381 kB | ✓ |
| app-page.run..prod.js gzip | 129 kB | 129 kB | ✓ |
| app-route-ex...dev.js gzip | 39.3 kB | 39.3 kB | ✓ |
| app-route-ex..prod.js gzip | 25.6 kB | 25.6 kB | ✓ |
| app-route-tu..prod.js gzip | 25.6 kB | 25.6 kB | ✓ |
| app-route-tu..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
| app-route.ru...dev.js gzip | 40.9 kB | 40.9 kB | ✓ |
| app-route.ru..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
| dist_client_...dev.js gzip | 356 B | 356 B | ✓ |
| dist_client_...dev.js gzip | 349 B | 349 B | ✓ |
| pages-api-tu..prod.js gzip | 9.69 kB | 9.69 kB | ✓ |
| pages-api.ru...dev.js gzip | 11.8 kB | 11.8 kB | ✓ |
| pages-api.ru..prod.js gzip | 9.68 kB | 9.68 kB | ✓ |
| pages-turbo...prod.js gzip | 21.9 kB | 21.9 kB | ✓ |
| pages.runtim...dev.js gzip | 31.5 kB | 31.5 kB | ✓ |
| pages.runtim..prod.js gzip | 21.9 kB | 21.9 kB | ✓ |
| server.runti..prod.js gzip | 60.6 kB | 60.7 kB | N/A |
| Overall change | 1.61 MB | 1.61 MB | ✓ |
build cache Overall increase ⚠️
| vercel/next.js canary | vercel/next.js sebbie/02-05-handle_invalid_sourcemaps | Change | |
|---|---|---|---|
| 0.pack gzip | 2.11 MB | 2.11 MB | |
| index.pack gzip | 75.3 kB | 76.8 kB | |
| Overall change | 2.18 MB | 2.19 MB |
Diff details
Diff for main-HASH.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
148c515 to
0b1911c
Compare
| "633": "Dynamic route not found", | ||
| "634": "Route %s used \"searchParams\" inside \"use cache\". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \"searchParams\" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache" | ||
| "634": "Route %s used \"searchParams\" inside \"use cache\". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \"searchParams\" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", | ||
| "635": "%s: Invalid source map. Only conformant source maps can be used to find the original code." |
There was a problem hiding this comment.
It's pretty jargon-y. The error cause is likely also not sufficient since the invalid sourcemap may have been produced by our bundler due to invalid input. But we also never have access to the source mapping URL. We only ever get access to the payload if it fails when constructing the source map consumer so we could theoretically dump the contents somewhere and link to that place. This feels excessive for such a rare issue that is in most cases caused by Next.js bugs (e.g. using turbopack://[project] as URLs so I feel comfortable with this error message.
Open to suggestions how to improve the wording though.
0b1911c to
c66af5a
Compare
| '' + | ||
| '\nError: Boom!' + | ||
| // TODO(veil): Turbopack's sourcemap loader generates a wrong source entry here | ||
| // Should be not be sourcemapped or "custom://[badhost]/app/bad-sourcemap/page.js" |
There was a problem hiding this comment.
"should not be sourcemapped"
| @@ -0,0 +1,10 @@ | |||
| { | |||
There was a problem hiding this comment.
Interesting, I did not know that you could manually provide a source map in a .js.map file like this. What makes it work? Does compiler just copy it to the dist folder next to the .js?
There was a problem hiding this comment.
The // #sourceMappingURL=... in the other file. The .map extension isn't required for sourcemapping to work.
You can also inline source maps via //# sourceMappingURL=data:application/json;base64,<base64EncodedSourcemapPayload>
| // tsc compile errors can be ignored | ||
| import { connection } from 'next/server' | ||
| export default async function Page() { | ||
| await connection() |
There was a problem hiding this comment.
Is connection required here?
There was a problem hiding this comment.
To make it dynamic. Otherwise we log during next build which complicates production testing. We only want to hit those errors when we actually navigate to the page.
ccad701 to
dc490a6
Compare
c66af5a to
306b1c1
Compare
306b1c1 to
8377737
Compare
Tests Passed |
8377737 to
36685d8
Compare
36685d8 to
bd2aece
Compare

Sourcemaps can be user generated content (e.g. when modules are externals) so they need to be treated as untrusted. There are two places where an invalid sourcemap triggers errors:
findSourceMapthrows on invalid sourcemaps with "TypeError [ERR_INVALID_ARG_TYPE]: The "payload" argument must be of type object. Received null"source-mapthrows when constructing the sourcemap consumerSource map consumers are in large parts free to not abort parsing and just continue but Node.js and
source-mapare stricter in that regard. Chrome is more forgiving as far as I can tell. This strictness might also just be from a time where the spec wasn't finalized or didn't explicitly allow this level of lenience.Closes https://linear.app/vercel/issue/NDX-505/