From f91b440c96ddc7553dd55b89390cbfddbaa0fc4a Mon Sep 17 00:00:00 2001 From: drewcorlin1 Date: Sun, 20 Aug 2023 13:13:42 -0400 Subject: [PATCH] Allow fetch to be used with NodeJS native fetch --- .../opentelemetry-instrumentation-fetch/src/fetch.ts | 4 +++- packages/opentelemetry-sdk-trace-web/src/utils.ts | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts b/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts index d02269c4409..a15406e6ecc 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts @@ -132,7 +132,9 @@ export class FetchInstrumentation extends InstrumentationBase< SemanticAttributes.HTTP_SCHEME, parsedUrl.protocol.replace(':', '') ); - span.setAttribute(SemanticAttributes.HTTP_USER_AGENT, navigator.userAgent); + if (typeof navigator !== 'undefined') { + span.setAttribute(SemanticAttributes.HTTP_USER_AGENT, navigator.userAgent); + } } /** diff --git a/packages/opentelemetry-sdk-trace-web/src/utils.ts b/packages/opentelemetry-sdk-trace-web/src/utils.ts index b3f583676fc..beb93572cae 100644 --- a/packages/opentelemetry-sdk-trace-web/src/utils.ts +++ b/packages/opentelemetry-sdk-trace-web/src/utils.ts @@ -131,6 +131,11 @@ export function sortResources( }); } +/** Returns the origin if present (if in browser context). */ +function getOrigin(): string | undefined { + return typeof location !== 'undefined' ? location.origin : undefined; +} + /** * Get closest performance resource ignoring the resources that have been * already used. @@ -174,7 +179,7 @@ export function getResource( } const sorted = sortResources(filteredResources); - if (parsedSpanUrl.origin !== location.origin && sorted.length > 1) { + if (parsedSpanUrl.origin !== getOrigin() && sorted.length > 1) { let corsPreFlightRequest: PerformanceResourceTiming | undefined = sorted[0]; let mainRequest: PerformanceResourceTiming = findMainRequest( sorted, @@ -438,7 +443,7 @@ export function shouldPropagateTraceHeaders( } const parsedSpanUrl = parseUrl(spanUrl); - if (parsedSpanUrl.origin === location.origin) { + if (parsedSpanUrl.origin === getOrigin()) { return true; } else { return propagateTraceHeaderUrls.some(propagateTraceHeaderUrl =>