From 4bab1bd513d003ccfad6c53ab2e6e0fa17e7af35 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 30 Aug 2023 13:05:26 +0200 Subject: [PATCH] fix(remix): Guard against missing default export for server instrument Fixes https://github.com/getsentry/sentry-javascript/issues/8904 --- packages/remix/src/utils/instrumentServer.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/remix/src/utils/instrumentServer.ts b/packages/remix/src/utils/instrumentServer.ts index e588ae74ccad..6fc326aab104 100644 --- a/packages/remix/src/utils/instrumentServer.ts +++ b/packages/remix/src/utils/instrumentServer.ts @@ -421,18 +421,21 @@ export function instrumentBuild(build: ServerBuild): ServerBuild { // Because the build can change between build and runtime. // So if there is a new `loader` or`action` or `documentRequest` after build. // We should be able to wrap them, as they may not be wrapped before. - if (!(wrappedEntry.module.default as WrappedFunction).__sentry_original__) { + const defaultExport = wrappedEntry.module.default as undefined | WrappedFunction; + if (defaultExport && !defaultExport.__sentry_original__) { fill(wrappedEntry.module, 'default', makeWrappedDocumentRequestFunction); } for (const [id, route] of Object.entries(build.routes)) { const wrappedRoute = { ...route, module: { ...route.module } }; - if (wrappedRoute.module.action && !(wrappedRoute.module.action as WrappedFunction).__sentry_original__) { + const routeAction = wrappedRoute.module.action as undefined | WrappedFunction; + if (routeAction && !routeAction.__sentry_original__) { fill(wrappedRoute.module, 'action', makeWrappedAction(id)); } - if (wrappedRoute.module.loader && !(wrappedRoute.module.loader as WrappedFunction).__sentry_original__) { + const routeLoader = wrappedRoute.module.loader as undefined | WrappedFunction; + if (routeLoader && !routeLoader.__sentry_original__) { fill(wrappedRoute.module, 'loader', makeWrappedLoader(id)); }