From 4b17c426aba69422542b0f69374f95eca3d1da97 Mon Sep 17 00:00:00 2001 From: thislight Date: Mon, 5 Aug 2024 16:24:34 +0800 Subject: [PATCH] added recover page on unexpected error --- bun.lockb | Bin 233176 -> 235447 bytes package.json | 3 ++- src/App.tsx | 4 +++- src/UnexpectedError.tsx | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/UnexpectedError.tsx diff --git a/bun.lockb b/bun.lockb index c0145f0bf66ad2e28083aa3f7fb0a9c6996162c3..16c0c62643a328abbaa36a81a12ea09f40e33ad6 100755 GIT binary patch delta 45013 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 delta 44173 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 M3${DHW-40)0QDY31ONa4 diff --git a/package.json b/package.json index 056139a..b5fb7a4 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,8 @@ "masto": "^6.8.0", "nanostores": "^0.9.5", "solid-js": "^1.8.18", - "solid-styled": "^0.11.1" + "solid-styled": "^0.11.1", + "stacktrace-js": "^2.0.2" }, "packageManager": "bun@1.1.21" } diff --git a/src/App.tsx b/src/App.tsx index 55e9971..1522795 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -53,11 +53,13 @@ const App: Component = () => { ); }); +const UnexpectedError = lazy(() => import("./UnexpectedError.js")) + return ( { console.error(err); - return <>; + return ; }} > diff --git a/src/UnexpectedError.tsx b/src/UnexpectedError.tsx new file mode 100644 index 0000000..38e3c70 --- /dev/null +++ b/src/UnexpectedError.tsx @@ -0,0 +1,40 @@ +import { Button } from '@suid/material'; +import {Component, createResource} from 'solid-js' +import { css } from 'solid-styled'; + +const UnexpectedError: Component<{error?: any}> = (props) => { + + const [errorMsg] = createResource(() => props.error, async (err) => { + if (err instanceof Error) { + const mod = await import('stacktrace-js') + const stacktrace = await mod.fromError(err) + const strackMsg = stacktrace.map(entry => `${entry.functionName ?? ""}@${entry.fileName}:(${entry.lineNumber}:${entry.columnNumber})`).join('\n') + return `${err.name}: ${err.message}\n${strackMsg}` + } + + return err.toString() + }) + + css` + main { + padding: calc(var(--safe-area-inset-top) + 20px) calc(var(--safe-area-inset-right) + 20px) calc(var(--safe-area-inset-bottom) + 20px) calc(var(--safe-area-inset-left) + 20px); + } + ` + + return
+

Oh, it is our fault.

+

There is an unexpected error in our app, and it's not your fault.

+

You can reload to see if this guy is gone. If you meet this guy repeatly, please report to us.

+
+ +
+
+ {errorMsg.loading ? 'Generating ' : " "}Technical Infomation (Bring to us if you report the problem) +
+        {errorMsg()}
+      
+
+
+} + +export default UnexpectedError;