Skip to content

Commit 2b4ff76

Browse files
authored
fix(gatsby): Make runtime error overlay work in non-v8 browsers (#36365)
1 parent f990e08 commit 2b4ff76

File tree

4 files changed

+26
-9
lines changed

4 files changed

+26
-9
lines changed

packages/gatsby/cache-dir/fast-refresh-overlay/components/runtime-errors.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as React from "react"
2-
import StackTrace from "stack-trace"
2+
import ErrorStackParser from "error-stack-parser"
33
import { Overlay, Header, HeaderOpenClose, Body } from "./overlay"
44
import { useStackFrame } from "./hooks"
55
import { CodeFrame } from "./code-frame"
66
import { getCodeFrameInformation, openInEditor } from "../utils"
77
import { Accordion, AccordionItem } from "./accordion"
88

99
function WrappedAccordionItem({ error, open }) {
10-
const stacktrace = StackTrace.parse(error)
10+
const stacktrace = ErrorStackParser.parse(error)
1111
const codeFrameInformation = getCodeFrameInformation(stacktrace)
1212

1313
const modulePath = codeFrameInformation?.moduleId

packages/gatsby/cache-dir/fast-refresh-overlay/utils.js

+10-6
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,19 @@ export function skipSSR() {
3636
}
3737

3838
export function getCodeFrameInformation(stackTrace) {
39-
const callSite = stackTrace.find(CallSite => CallSite.getFileName())
40-
if (!callSite) {
39+
const stackFrame = stackTrace.find(stackFrame => {
40+
const fileName = stackFrame.getFileName()
41+
return fileName && fileName !== `[native code]` // Quirk of Safari error stack frames
42+
})
43+
44+
if (!stackFrame) {
4145
return null
4246
}
4347

44-
const moduleId = formatFilename(callSite.getFileName())
45-
const lineNumber = callSite.getLineNumber()
46-
const columnNumber = callSite.getColumnNumber()
47-
const functionName = callSite.getFunctionName()
48+
const moduleId = formatFilename(stackFrame.getFileName())
49+
const lineNumber = stackFrame.getLineNumber()
50+
const columnNumber = stackFrame.getColumnNumber()
51+
const functionName = stackFrame.getFunctionName()
4852

4953
return {
5054
moduleId,

packages/gatsby/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"devcert": "^1.2.0",
6868
"dotenv": "^8.6.0",
6969
"enhanced-resolve": "^5.8.3",
70+
"error-stack-parser": "^2.1.4",
7071
"eslint": "^7.32.0",
7172
"eslint-config-react-app": "^6.0.0",
7273
"eslint-plugin-flowtype": "^5.10.0",
@@ -271,4 +272,4 @@
271272
"yargs": {
272273
"boolean-negation": false
273274
}
274-
}
275+
}

yarn.lock

+12
Original file line numberDiff line numberDiff line change
@@ -10259,6 +10259,13 @@ error-stack-parser@^2.0.6:
1025910259
dependencies:
1026010260
stackframe "^1.1.1"
1026110261

10262+
error-stack-parser@^2.1.4:
10263+
version "2.1.4"
10264+
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
10265+
integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
10266+
dependencies:
10267+
stackframe "^1.3.4"
10268+
1026210269
error@^7.0.0:
1026310270
version "7.0.2"
1026410271
resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02"
@@ -23613,6 +23620,11 @@ stackframe@^1.1.1:
2361323620
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71"
2361423621
integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==
2361523622

23623+
stackframe@^1.3.4:
23624+
version "1.3.4"
23625+
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
23626+
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
23627+
2361623628
standard-version@^9.0.0:
2361723629
version "9.1.0"
2361823630
resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-9.1.0.tgz#07589469324d967ffe665fa86ef612949a858a80"

0 commit comments

Comments
 (0)