kit icon indicating copy to clipboard operation
kit copied to clipboard

`handleError` from hooks.client does not handle thrown Error

Open brandonp-ais opened this issue 1 year ago • 0 comments

Describe the bug

Unexpected errors should be passed to hooks.client.js#handleError() so they could be sent to Sentry etc.

https://kit.svelte.dev/docs/hooks#shared-hooks-handleerror

But if a new Error() is thrown from top level of a +page.svelte script tag, the app crashes and the hook is not invoked.

I would expect that such an error, which is mimicking an unexpected error, should be picked up by the hook.

Reproduction

Stackblitz reproduction

Logs

proxy.js?v=edb02b92:15 [HMR][Svelte] Unrecoverable HMR error in <+page>: next update will trigger a full reload
logError @ proxy.js?v=edb02b92:15
Proxy<+page> @ proxy.js?v=edb02b92:380
construct_svelte_component_dev @ chunk-CKECMU6L.js?v=edb02b92:2110
update @ root.svelte:42
update_slot_base @ chunk-CKECMU6L.js?v=edb02b92:97
update @ +layout.svelte:14
update @ chunk-CKECMU6L.js?v=edb02b92:1140
flush @ chunk-CKECMU6L.js?v=edb02b92:1106
Show 1 more frame
+page.svelte:11 Uncaught (in promise) Error: Will you see this error?
    at instance (+page.svelte:11:29)
    at init (chunk-CKECMU6L.js?v=edb02b92:1890:23)
    at new Page (+page.svelte:3:45)
    at createProxiedComponent (svelte-hooks.js?v=edb02b92:341:9)
    at new ProxyComponent (proxy.js?v=edb02b92:242:7)
    at new Proxy<+page> (proxy.js?v=edb02b92:349:11)
    at construct_svelte_component_dev (chunk-CKECMU6L.js?v=edb02b92:2110:22)
    at Object.update [as p] (root.svelte:42:41)
    at update_slot_base (chunk-CKECMU6L.js?v=edb02b92:97:10)
    at Object.update [as p] (+layout.svelte:14:63)
instance @ +page.svelte:11
init @ chunk-CKECMU6L.js?v=edb02b92:1890
Page @ +page.svelte:3
createProxiedComponent @ svelte-hooks.js?v=edb02b92:341
ProxyComponent @ proxy.js?v=edb02b92:242
Proxy<+page> @ proxy.js?v=edb02b92:349
construct_svelte_component_dev @ chunk-CKECMU6L.js?v=edb02b92:2110
update @ root.svelte:42
update_slot_base @ chunk-CKECMU6L.js?v=edb02b92:97
update @ +layout.svelte:14
update @ chunk-CKECMU6L.js?v=edb02b92:1140
flush @ chunk-CKECMU6L.js?v=edb02b92:1106
Show 1 more frame
blitz.a12d8c69.js:44 Proxy(Error) {stack: 'Error: Will you see this error?\n    at eval (/home…tejs/kit/src/runtime/server/page/index.js:295:10)', message: 'Will you see this error?'}
consoleCall @ blitz.a12d8c69.js:44
#options.hooks.handleError @ index.js:44
handle_error_and_jsonify @ utils.js:115
respond_with_error @ respond_with_error.js:87
await in respond_with_error (async)
render_page @ index.js:305
await in render_page (async)
resolve @ respond.js:397
resolve @ respond.js:269
#options.hooks.handle @ index.js:43
respond @ respond.js:266
await in respond (async)
respond @ index.js:75
eval @ index.js:522
await in eval (async)
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
viteServeRawFsMiddleware @ dep-e8f070e8.js:46178
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
viteTransformMiddleware @ dep-e8f070e8.js:61637
await in viteTransformMiddleware (async)
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
eval @ dep-e8f070e8.js:45971
viteServePublicMiddleware @ dep-e8f070e8.js:46101
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
viteHMRPingMiddleware @ dep-e8f070e8.js:63543
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
next @ dep-e8f070e8.js:49029
cors @ dep-e8f070e8.js:49579
eval @ dep-e8f070e8.js:49615
originCallback @ dep-e8f070e8.js:49605
eval @ dep-e8f070e8.js:49610
optionsCallback @ dep-e8f070e8.js:49590
corsMiddleware @ dep-e8f070e8.js:49595
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
eval @ index.js:408
call @ dep-e8f070e8.js:49107
next @ dep-e8f070e8.js:49051
handle @ dep-e8f070e8.js:49054
app @ dep-e8f070e8.js:48919
EventEmitter.emit @ events.js:526
parserOnIncoming @ _http_server.js:951
parserOnHeadersComplete @ _http_common.js:128
(anonymous) @ blitz.a12d8c69.js:44
_0x2e75e9 @ blitz.a12d8c69.js:44
(anonymous) @ blitz.a12d8c69.js:44
my-error:1     Failed to load resource: the server responded with a status of 500 (Internal Server Error)

System Info

New sveltejs-kit-template-default on stackblitz

Severity

serious, but I can work around it

Additional Information

No response

brandonp-ais avatar Jun 16 '23 10:06 brandonp-ais