[DevTools] Fix display of stack frames with anonymous sources (#34237)
Sebastian "Sebbie" Silbermann committed
Aug 20, 2025 at 17:31 UTC
03fda05d2c112a1fb829ef663ca4e98d540adc36
3 files changed
+19
-9
packages/react-devtools-shared/src/backend/utils/parseStackTrace.js
+3
-2
@@ -52,8 +52,8 @@ function parseStackTraceFromChromeStack(
52
if (filename === '<anonymous>') {
53
filename = '';
54
}
55
- const line = +(parsed[3] || parsed[6]);
56
- const col = +(parsed[4] || parsed[7]);
55
+ const line = +(parsed[3] || parsed[6] || 0);
56
+ const col = +(parsed[4] || parsed[7] || 0);
57
parsedFrames.push([name, filename, line, col, 0, 0, isAsync]);
58
}
59
return parsedFrames;
@@ -235,6 +235,7 @@ function collectStackTrace(
235
// at name (filename:0:0)
236
// at filename:0:0
237
// at async filename:0:0
238
+// at Array.map (<anonymous>)
239
const chromeFrameRegExp =
240
/^ *at (?:(.+) \((?:(.+):(\d+):(\d+)|\<anonymous\>)\)|(?:async )?(.+):(\d+):(\d+)|\<anonymous\>)$/;
241
packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.js
+12
-7
@@ -63,13 +63,18 @@ export function CallSiteView({
63
return (
64
<div className={styles.CallSite}>
65
{functionName || virtualFunctionName}
66
- {' @ '}
67
- <span
68
- className={linkIsEnabled ? styles.Link : null}
69
- onClick={viewSource}
70
- title={url + ':' + line}>
71
- {formatLocationForDisplay(url, line, column)}
72
- </span>
66
+ {url !== '' && (
67
+ <>
68
+ {' @ '}
69
+ <span
70
+ className={linkIsEnabled ? styles.Link : null}
71
+ onClick={viewSource}
72
+ title={url + ':' + line}>
73
+ {formatLocationForDisplay(url, line, column)}
74
+ </span>
75
+ </>
76
+ )}
77
+
78
<ElementBadges environmentName={environmentName} />
79
</div>
80
);
packages/react-devtools-shared/src/devtools/views/Components/formatLocationForDisplay.js
+4
@@ -40,5 +40,9 @@ export default function formatLocationForDisplay(
40
}
41
}
42
43
+ if (line === 0) {
44
+ return nameOnly;
45
+ }
46
+
47
return `${nameOnly}:${line}`;
48
}