-
Notifications
You must be signed in to change notification settings - Fork 27.2k
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
Use consistent error formatting in terminal #71909
Use consistent error formatting in terminal #71909
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
db9f598
to
84374b1
Compare
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
buildDuration | 20.8s | 17.7s | N/A |
buildDurationCached | 17s | 14.7s | N/A |
nodeModulesSize | 409 MB | 409 MB | N/A |
nextStartRea..uration (ms) | 471ms | 474ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
1187-HASH.js gzip | 49.2 kB | 49.2 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.3 kB | 5.3 kB | N/A |
bccd1874-HASH.js gzip | 53 kB | 53 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 232 B | 235 B | N/A |
main-HASH.js gzip | 33.7 kB | 33.7 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | 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/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 513 B | 511 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | N/A |
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.44 kB | 4.43 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 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 | 1.75 kB | 1.75 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
_buildManifest.js gzip | 746 B | 747 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
index.html gzip | 523 B | 524 B | N/A |
link.html gzip | 537 B | 537 B | ✓ |
withRouter.html gzip | 519 B | 521 B | N/A |
Overall change | 537 B | 537 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 200 kB | 200 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 665 B | 664 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.1 kB | 31.1 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/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
797-experime...dev.js gzip | 322 B | 322 B | ✓ |
797.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 321 kB | 321 kB | ✓ |
app-page-exp..prod.js gzip | 126 kB | 126 kB | ✓ |
app-page-tur..prod.js gzip | 139 kB | 139 kB | ✓ |
app-page-tur..prod.js gzip | 134 kB | 134 kB | ✓ |
app-page.run...dev.js gzip | 311 kB | 311 kB | ✓ |
app-page.run..prod.js gzip | 122 kB | 122 kB | ✓ |
app-route-ex...dev.js gzip | 36.8 kB | 36.8 kB | ✓ |
app-route-ex..prod.js gzip | 25 kB | 25 kB | ✓ |
app-route-tu..prod.js gzip | 25 kB | 25 kB | ✓ |
app-route-tu..prod.js gzip | 24.8 kB | 24.8 kB | ✓ |
app-route.ru...dev.js gzip | 38.5 kB | 38.5 kB | ✓ |
app-route.ru..prod.js gzip | 24.8 kB | 24.8 kB | ✓ |
pages-api-tu..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-api.ru...dev.js gzip | 11.4 kB | 11.4 kB | ✓ |
pages-api.ru..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-turbo...prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
pages.runtim...dev.js gzip | 27 kB | 27 kB | ✓ |
pages.runtim..prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
server.runti..prod.js gzip | 916 kB | 916 kB | N/A |
Overall change | 1.43 MB | 1.43 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js sebbie/10-26-use_consistent_error_formatting_in_terminal | Change | |
---|---|---|---|
0.pack gzip | 2.04 MB | 2.04 MB | |
index.pack gzip | 145 kB | 145 kB | N/A |
Overall change | 2.04 MB | 2.04 MB |
Diff details
Diff for main-HASH.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
d1f7530
to
a469f58
Compare
84374b1
to
5446d4c
Compare
a469f58
to
7fcb95c
Compare
5446d4c
to
88aee34
Compare
7fcb95c
to
10283fa
Compare
07c176a
to
2dddf8c
Compare
c7865b0
to
4a62733
Compare
2dddf8c
to
b8d9d50
Compare
4a62733
to
4af2e97
Compare
b8d9d50
to
556771b
Compare
4af2e97
to
933d739
Compare
556771b
to
a73d9f1
Compare
4c97f7f
to
9ccdf4b
Compare
a73d9f1
to
9fb236a
Compare
9ccdf4b
to
e9e1eff
Compare
bf7a8e7
to
d816edf
Compare
@@ -947,127 +929,24 @@ async function startWatcher(opts: SetupOpts) { | |||
return { finished: false } | |||
} | |||
|
|||
async function logErrorWithOriginalStack( | |||
function logErrorWithOriginalStack( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At this point it's really just a prefixed log. The only meaningful logic is silencing of TurbopackInternalError but that's a debateable strategy.
Might get rid of the prefixing or replace it with console
instrumentation instead.
// TODO(veil): Use codeframe froma stackframe that's not ignore-listed | ||
expect(stripAnsi(output)).not.toInclude(errorHighlight) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Revisit once bundler sourcemap fallback is implemented for webpack
d816edf
to
c41e998
Compare
8eafe6e
to
81f6cb4
Compare
c41e998
to
68e43f4
Compare
3f7f03c
to
93c99c4
Compare
'\n ⚠ middleware.js (3:22) @ __TURBOPACK__default__export__' + | ||
'\n ⨯ middleware.js (4:9) @ eval' | ||
// TODO(veil): Should be sourcemapped | ||
'\n at __TURBOPACK__default__export__ (.next/' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would love to have these turbopack special identifiers demangled before printing. There is a method to demangle them in a string we need to call
'\n at __TURBOPACK__default__export__ (.next/' | |
'\n at {default export} (.next/' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My current thinking is that these should just be sourcemapped to default
. That's what you'd get in the original stack trace.
But we already special case the WEBPACK__default__export so I probably just go with that short term.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
packages/next/src/shared/lib/magic-identifier.ts decodeMagicIdentifier
A case where we encounter this is not known. Only saw this while stepping through Node.js internals.
93c99c4
to
cac668a
Compare
We stop treating certain errors special. Instead, each error will be treated as if it were logged via console. This way we can just use
console.error(error)
(instead ofbundler.logErrorWithOriginalStack
) everywhere and get a consistent stack format. This will also allow us the get sourcemapped stacks innext build
and evennext start
if desired.Only reason to use
bundler.logErrorWithOriginalStack
is to get a prefixed log with a colored "x". We might get rid ofbundler.logErrorWithOriginalStack
in favor of instrumenting.