Skip to content

Commit 825753a

Browse files
authored
Turbopack: name the module factory function (vercel#73553)
### What? In development give the module factory a useful name, so it's clear in stack traces that this is the module evaluation part of the execution. This also fixes some bugs with the stack trace parser, which seems to struggle if function names contain brackets. The automatically inferred function name would be the module id, which contains brackets.
1 parent b98796b commit 825753a

File tree

23 files changed

+166
-141
lines changed

23 files changed

+166
-141
lines changed

packages/next/src/next-devtools/dev-overlay/components/code-frame/code-frame.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ export const CODE_FRAME_STYLES = `
139139
}
140140
141141
.code-frame-link [data-text] {
142-
display: inline-flex;
143142
text-align: left;
144143
margin: auto 6px;
145144
}

test/development/acceptance-app/ReactRefreshLogBox.test.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ describe('ReactRefreshLogBox app', () => {
9393
"description": "no",
9494
"environmentLabel": null,
9595
"label": "Runtime Error",
96-
"source": "index.js (3:7) @ [project]/index.js [app-client] (ecmascript)
96+
"source": "index.js (3:7) @ {module evaluation}
9797
> 3 | throw new Error('no')
9898
| ^",
9999
"stack": [
100-
"[project]/index.js [app-client] (ecmascript) index.js (3:7)",
101-
"[project]/app/page.js [app-client] (ecmascript) app/page.js (2:1)",
100+
"{module evaluation} index.js (3:7)",
101+
"{module evaluation} app/page.js (2:1)",
102102
],
103103
}
104104
`)
@@ -938,8 +938,7 @@ describe('ReactRefreshLogBox app', () => {
938938
"description": "test",
939939
"environmentLabel": null,
940940
"label": "Runtime Error",
941-
"source": "index.js (3:11) @
942-
{default export}
941+
"source": "index.js (3:11) @ {default export}
943942
> 3 | throw new Error('test')
944943
| ^",
945944
"stack": [
@@ -1570,12 +1569,12 @@ export default function Home() {
15701569
"description": "utils error",
15711570
"environmentLabel": null,
15721571
"label": "Runtime Error",
1573-
"source": "app/utils.ts (1:7) @ [project]/app/utils.ts [app-client] (ecmascript)
1572+
"source": "app/utils.ts (1:7) @ {module evaluation}
15741573
> 1 | throw new Error('utils error')
15751574
| ^",
15761575
"stack": [
1577-
"[project]/app/utils.ts [app-client] (ecmascript) app/utils.ts (1:7)",
1578-
"[project]/app/page.js [app-client] (ecmascript) app/page.js (2:1)",
1576+
"{module evaluation} app/utils.ts (1:7)",
1577+
"{module evaluation} app/page.js (2:1)",
15791578
],
15801579
}
15811580
`)

test/development/acceptance/ReactRefreshLogBox.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,13 @@ describe('ReactRefreshLogBox', () => {
121121
"description": "no",
122122
"environmentLabel": null,
123123
"label": "Runtime Error",
124-
"source": "index.js (3:7) @ [project]/index.js [ssr] (ecmascript)
124+
"source": "index.js (3:7) @ {module evaluation}
125125
> 3 | throw new Error('no')
126126
| ^",
127127
"stack": [
128-
"[project]/index.js [ssr] (ecmascript) index.js (3:7)",
129-
"[project]/pages/index.js [ssr] (ecmascript) <module evaluation> pages/index.js (1:1)",
130-
"[project]/pages/index.js [ssr] (ecmascript) pages/index.js (1:1)",
128+
"{module evaluation} index.js (3:7)",
129+
"{module evaluation} pages/index.js (1:1)",
130+
"{module evaluation} pages/index.js (1:1)",
131131
"<FIXME-next-dist-dir>",
132132
],
133133
}
@@ -162,13 +162,13 @@ describe('ReactRefreshLogBox', () => {
162162
"description": "no",
163163
"environmentLabel": null,
164164
"label": "Runtime Error",
165-
"source": "index.js (3:7) @ [project]/index.js [ssr] (ecmascript)
165+
"source": "index.js (3:7) @ {module evaluation}
166166
> 3 | throw new Error('no')
167167
| ^",
168168
"stack": [
169-
"[project]/index.js [ssr] (ecmascript) index.js (3:7)",
170-
"[project]/pages/index.js [ssr] (ecmascript) <module evaluation> pages/index.js (1:1)",
171-
"[project]/pages/index.js [ssr] (ecmascript) pages/index.js (1:1)",
169+
"{module evaluation} index.js (3:7)",
170+
"{module evaluation} pages/index.js (1:1)",
171+
"{module evaluation} pages/index.js (1:1)",
172172
"<FIXME-next-dist-dir>",
173173
],
174174
}

test/development/acceptance/ReactRefreshRegression.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,7 @@ describe('ReactRefreshRegression', () => {
287287
"description": "boom",
288288
"environmentLabel": null,
289289
"label": "Runtime Error",
290-
"source": "pages/index.js (1:36) @
291-
{default export}
290+
"source": "pages/index.js (1:36) @ {default export}
292291
> 1 | export default function () { throw new Error('boom'); }
293292
| ^",
294293
"stack": [

test/development/app-dir/ssr-in-rsc/ssr-in-rsc.test.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ describe('react-dom/server in React Server environment', () => {
358358
expect(redbox).toMatchInlineSnapshot(`
359359
{
360360
"description": "Cannot read properties of undefined (reading 'ReactCurrentDispatcher')",
361-
"source": "app/exports/app-code/react-dom-server-node-explicit/page.js (1:1) @ [project]/app/exports/app-code/react-dom-server-node-explicit/page.js [app-rsc] (ecmascript)
361+
"source": "app/exports/app-code/react-dom-server-node-explicit/page.js (1:1) @ {module evaluation}
362362
363363
> 1 | import * as ReactDOMServerNode from 'react-dom/server.node'
364364
| ^
@@ -371,7 +371,7 @@ describe('react-dom/server in React Server environment', () => {
371371
expect(redbox).toMatchInlineSnapshot(`
372372
{
373373
"description": "react-dom/server is not supported in React Server Components.",
374-
"source": "app/exports/app-code/react-dom-server-node-explicit/page.js (1:1) @ [project]/app/exports/app-code/react-dom-server-node-explicit/page.js [app-rsc] (ecmascript)
374+
"source": "app/exports/app-code/react-dom-server-node-explicit/page.js (1:1) @ {module evaluation}
375375
376376
> 1 | import * as ReactDOMServerNode from 'react-dom/server.node'
377377
| ^
@@ -498,7 +498,7 @@ describe('react-dom/server in React Server environment', () => {
498498
expect(redbox).toMatchInlineSnapshot(`
499499
{
500500
"description": "Cannot read properties of undefined (reading 'ReactCurrentDispatcher')",
501-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
501+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
502502
503503
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
504504
| ^
@@ -511,7 +511,7 @@ describe('react-dom/server in React Server environment', () => {
511511
expect(redbox).toMatchInlineSnapshot(`
512512
{
513513
"description": "react-dom/server is not supported in React Server Components.",
514-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
514+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
515515
516516
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
517517
| ^
@@ -796,20 +796,20 @@ describe('react-dom/server in React Server environment', () => {
796796
expect(redbox).toMatchInlineSnapshot(`
797797
{
798798
"description": "Cannot read properties of undefined (reading 'ReactCurrentDispatcher')",
799-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
800-
801-
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
802-
| ^
803-
2 | // Fine to drop once React is on ESM
804-
3 | import ReactDOMServerEdgeDefault from 'react-dom/server.node'
805-
4 |",
806-
}
799+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
800+
801+
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
802+
| ^
803+
2 | // Fine to drop once React is on ESM
804+
3 | import ReactDOMServerEdgeDefault from 'react-dom/server.node'
805+
4 |",
806+
}
807807
`)
808808
} else {
809809
expect(redbox).toMatchInlineSnapshot(`
810810
{
811811
"description": "react-dom/server is not supported in React Server Components.",
812-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
812+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
813813
814814
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
815815
| ^
@@ -854,7 +854,7 @@ describe('react-dom/server in React Server environment', () => {
854854
expect(redbox).toMatchInlineSnapshot(`
855855
{
856856
"description": "Cannot read properties of undefined (reading 'ReactCurrentDispatcher')",
857-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
857+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
858858
859859
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
860860
| ^
@@ -867,7 +867,7 @@ describe('react-dom/server in React Server environment', () => {
867867
expect(redbox).toMatchInlineSnapshot(`
868868
{
869869
"description": "react-dom/server is not supported in React Server Components.",
870-
"source": "internal-pkg/server.node.js (1:1) @ [project]/internal-pkg/server.node.js [app-rsc] (ecmascript)
870+
"source": "internal-pkg/server.node.js (1:1) @ {module evaluation}
871871
872872
> 1 | import * as ReactDOMServerEdge from 'react-dom/server.node'
873873
| ^

test/development/middleware-errors/index.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ describe('middleware - development errors', () => {
5757
"description": "boom",
5858
"environmentLabel": null,
5959
"label": "Runtime Error",
60-
"source": "middleware.js (3:15) @
61-
{default export}
60+
"source": "middleware.js (3:15) @ {default export}
6261
> 3 | throw new Error('boom')
6362
| ^",
6463
"stack": [
@@ -268,7 +267,7 @@ describe('middleware - development errors', () => {
268267
isTurbopack
269268
? '\n ⨯ Error: booooom!' +
270269
// TODO(veil): Should be sourcemapped
271-
'\n at [project]/middleware.js [middleware-edge] (ecmascript)'
270+
'\n at __TURBOPACK__module__evaluation__ (middleware.js:3:13)'
272271
: '\n ⨯ Error: booooom!' +
273272
// TODO: Should be anonymous method without a method name
274273
'\n at <unknown> (middleware.js:3)' +
@@ -288,11 +287,11 @@ describe('middleware - development errors', () => {
288287
"description": "booooom!",
289288
"environmentLabel": null,
290289
"label": "Runtime Error",
291-
"source": "middleware.js (3:13) @ [project]/middleware.js [middleware-edge] (ecmascript)
290+
"source": "middleware.js (3:13) @ {module evaluation}
292291
> 3 | throw new Error('booooom!')
293292
| ^",
294293
"stack": [
295-
"[project]/middleware.js [middleware-edge] (ecmascript) middleware.js (3:13)",
294+
"{module evaluation} middleware.js (3:13)",
296295
],
297296
}
298297
`)

test/development/pages-dir/client-navigation/index.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,11 +353,11 @@ describe('Client Navigation', () => {
353353
"description": "An Expected error occurred",
354354
"environmentLabel": null,
355355
"label": "Runtime Error",
356-
"source": "pages/error-in-the-browser-global-scope.js (2:9) @ [project]/pages/error-in-the-browser-global-scope.js [client] (ecmascript)
356+
"source": "pages/error-in-the-browser-global-scope.js (2:9) @ {module evaluation}
357357
> 2 | throw new Error('An Expected error occurred')
358358
| ^",
359359
"stack": [
360-
"[project]/pages/error-in-the-browser-global-scope.js [client] (ecmascript) pages/error-in-the-browser-global-scope.js (2:9)",
360+
"{module evaluation} pages/error-in-the-browser-global-scope.js (2:9)",
361361
],
362362
}
363363
`)

test/development/pages-dir/client-navigation/rendering.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,7 @@ describe('Client Navigation rendering', () => {
236236
"description": "This is an expected error",
237237
"environmentLabel": null,
238238
"label": "Runtime Error",
239-
"source": "pages/error-inside-page.js (2:9) @
240-
{default export}
239+
"source": "pages/error-inside-page.js (2:9) @ {default export}
241240
> 2 | throw new Error('This is an expected error')
242241
| ^",
243242
"stack": [
@@ -274,11 +273,11 @@ describe('Client Navigation rendering', () => {
274273
"description": "aa is not defined",
275274
"environmentLabel": null,
276275
"label": "Runtime ReferenceError",
277-
"source": "pages/error-in-the-global-scope.js (1:1) @ [project]/pages/error-in-the-global-scope.js [ssr] (ecmascript)
276+
"source": "pages/error-in-the-global-scope.js (1:1) @ {module evaluation}
278277
> 1 | aa = 10 //eslint-disable-line
279278
| ^",
280279
"stack": [
281-
"[project]/pages/error-in-the-global-scope.js [ssr] (ecmascript) pages/error-in-the-global-scope.js (1:1)",
280+
"{module evaluation} pages/error-in-the-global-scope.js (1:1)",
282281
"<FIXME-next-dist-dir>",
283282
],
284283
}

test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2425,11 +2425,11 @@ describe('Cache Components Errors', () => {
24252425
"description": ""use cache: private" must not be used within \`unstable_cache()\`.",
24262426
"environmentLabel": null,
24272427
"label": "Runtime Error",
2428-
"source": "app/use-cache-private-in-unstable-cache/page.tsx (21:38) @ [project]/app/use-cache-private-in-unstable-cache/page.tsx [app-rsc] (ecmascript)
2428+
"source": "app/use-cache-private-in-unstable-cache/page.tsx (21:38) @ {module evaluation}
24292429
> 21 | const getCachedData = unstable_cache(async () => {
24302430
| ^",
24312431
"stack": [
2432-
"[project]/app/use-cache-private-in-unstable-cache/page.tsx [app-rsc] (ecmascript) app/use-cache-private-in-unstable-cache/page.tsx (21:38)",
2432+
"{module evaluation} app/use-cache-private-in-unstable-cache/page.tsx (21:38)",
24332433
"<FIXME-file-protocol>",
24342434
"<FIXME-file-protocol>",
24352435
"<FIXME-next-dist-dir>",
@@ -2486,7 +2486,7 @@ describe('Cache Components Errors', () => {
24862486
if (isDebugPrerender) {
24872487
expect(output).toMatchInlineSnapshot(`
24882488
"Error: "use cache: private" must not be used within \`unstable_cache()\`.
2489-
at 0 (bundler:///app/use-cache-private-in-unstable-cache/page.tsx:21:38)
2489+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-unstable-cache/page.tsx:21:38)
24902490
at a (<next-dist-dir>)
24912491
at b (<next-dist-dir>)
24922492
19 | }
@@ -2505,7 +2505,7 @@ describe('Cache Components Errors', () => {
25052505
} else {
25062506
expect(output).toMatchInlineSnapshot(`
25072507
"Error: "use cache: private" must not be used within \`unstable_cache()\`.
2508-
at 0 (bundler:///app/use-cache-private-in-unstable-cache/page.tsx:21:38)
2508+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-unstable-cache/page.tsx:21:38)
25092509
at a (<next-dist-dir>)
25102510
19 | }
25112511
20 |
@@ -2569,11 +2569,11 @@ describe('Cache Components Errors', () => {
25692569
"description": ""use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".",
25702570
"environmentLabel": null,
25712571
"label": "Runtime Error",
2572-
"source": "app/use-cache-private-in-use-cache/page.tsx (15:1) @ [project]/app/use-cache-private-in-use-cache/page.tsx [app-rsc] (ecmascript)
2572+
"source": "app/use-cache-private-in-use-cache/page.tsx (15:1) @ {module evaluation}
25732573
> 15 | async function Private() {
25742574
| ^",
25752575
"stack": [
2576-
"[project]/app/use-cache-private-in-use-cache/page.tsx [app-rsc] (ecmascript) app/use-cache-private-in-use-cache/page.tsx (15:1)",
2576+
"{module evaluation} app/use-cache-private-in-use-cache/page.tsx (15:1)",
25772577
"<FIXME-file-protocol>",
25782578
"<FIXME-file-protocol>",
25792579
"<FIXME-next-dist-dir>",
@@ -2631,7 +2631,7 @@ describe('Cache Components Errors', () => {
26312631
if (isDebugPrerender) {
26322632
expect(output).toMatchInlineSnapshot(`
26332633
"Error: "use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".
2634-
at 0 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2634+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
26352635
at a (<next-dist-dir>)
26362636
at b (<next-dist-dir>)
26372637
13 | }
@@ -2642,7 +2642,7 @@ describe('Cache Components Errors', () => {
26422642
17 |
26432643
18 | return <p>Private</p>
26442644
Error: "use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".
2645-
at 1 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2645+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
26462646
at c (<next-dist-dir>)
26472647
at d (<next-dist-dir>)
26482648
13 | }
@@ -2661,8 +2661,8 @@ describe('Cache Components Errors', () => {
26612661
} else {
26622662
expect(output).toMatchInlineSnapshot(`
26632663
"Error: "use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".
2664-
at 0 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2665-
at 1 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:16)
2664+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2665+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:16)
26662666
at a (<next-dist-dir>)
26672667
13 | }
26682668
14 |
@@ -2672,8 +2672,8 @@ describe('Cache Components Errors', () => {
26722672
17 |
26732673
18 | return <p>Private</p>
26742674
Error: "use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".
2675-
at 2 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2676-
at 3 (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:16)
2675+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:1)
2676+
at __TURBOPACK__module__evaluation__ (bundler:///app/use-cache-private-in-use-cache/page.tsx:15:16)
26772677
at b (<next-dist-dir>)
26782678
13 | }
26792679
14 |

0 commit comments

Comments
 (0)