Skip to content

Commit 0d50da9

Browse files
authored
improve +onHookCall (vikejs/vike-react#201) (#3020)
1 parent 303536b commit 0d50da9

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

  • packages/vike/src/shared-server-client/hooks

packages/vike/src/shared-server-client/hooks/execHook.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ function execHookBase<HookReturn>(
221221
originalReturn = callOriginal()
222222
} catch (err) {
223223
originalError = err
224+
throw err
224225
}
225226
return originalReturn
226227
}
@@ -232,20 +233,22 @@ function execHookBase<HookReturn>(
232233
try {
233234
await onHookCall(hookPublic, pageContext)
234235
} catch (err) {
235-
console.error(err)
236-
/* TO-DO/eventually: use dependency injection to be able to use logErrorServer() when this function runs on the server-side.
237-
if (
238-
!globalThis.__VIKE__IS_CLIENT &&
239-
pageContext &&
240-
// Avoid infinite loop
241-
hookName !== 'onError'
242-
) {
243-
assert(!pageContext.isClientSide)
244-
logErrorServer(err, pageContext)
245-
} else {
246-
logErrorClient(err)
236+
if (err !== originalError) {
237+
console.error(err)
238+
/* TO-DO/eventually: use dependency injection to be able to use logErrorServer() when this function runs on the server-side.
239+
if (
240+
!globalThis.__VIKE__IS_CLIENT &&
241+
pageContext &&
242+
// Avoid infinite loop
243+
hookName !== 'onError'
244+
) {
245+
assert(!pageContext.isClientSide)
246+
logErrorServer(err, pageContext)
247+
} else {
248+
logErrorClient(err)
249+
}
250+
//*/
247251
}
248-
//*/
249252
}
250253
})()
251254
// +onHookCall must run hook.call() before any `await` — https://github.com/vikejs/vike/pull/2978#discussion_r2645232953

0 commit comments

Comments
 (0)