diff --git a/packages/core/src/browser/cookie.ts b/packages/core/src/browser/cookie.ts index 50e0212023..c531f6a9ed 100644 --- a/packages/core/src/browser/cookie.ts +++ b/packages/core/src/browser/cookie.ts @@ -6,6 +6,7 @@ import { generateUUID, } from '../tools/utils/stringUtils' import { buildUrl } from '../tools/utils/urlPolyfill' +import { globalObject } from '../tools/globalObject' export interface CookieOptions { secure?: boolean @@ -75,7 +76,14 @@ export function deleteCookie(name: string, options?: CookieOptions) { * https://web.dev/same-site-same-origin/#site */ let getCurrentSiteCache: string | undefined -export function getCurrentSite(hostname = location.hostname, referrer = document.referrer): string | undefined { +export function getCurrentSite( + hostname = globalObject.location?.hostname ?? '', + referrer = typeof document !== 'undefined' ? document.referrer : '' +): string | undefined { + // Cookie probing requires document.cookie, which is not available in Web Workers or Node.js + if (typeof document === 'undefined') { + return undefined + } if (getCurrentSiteCache === undefined) { const defaultHostName = getCookieDefaultHostName(hostname, referrer) if (defaultHostName) { diff --git a/packages/core/src/domain/context/storeContextManager.ts b/packages/core/src/domain/context/storeContextManager.ts index ff43259924..e265630438 100644 --- a/packages/core/src/domain/context/storeContextManager.ts +++ b/packages/core/src/domain/context/storeContextManager.ts @@ -16,6 +16,11 @@ export function storeContextManager( productKey: string, customerDataType: CustomerDataType ) { + // window and localStorage are not available in Web Workers or Node.js environments + if (typeof window === 'undefined' || typeof localStorage === 'undefined') { + return + } + const storageKey = buildStorageKey(productKey, customerDataType) storageListeners.push( diff --git a/packages/core/src/tools/utils/urlPolyfill.ts b/packages/core/src/tools/utils/urlPolyfill.ts index 812b407bb7..b7206850a8 100644 --- a/packages/core/src/tools/utils/urlPolyfill.ts +++ b/packages/core/src/tools/utils/urlPolyfill.ts @@ -1,7 +1,7 @@ import { globalObject } from '../globalObject' export function normalizeUrl(url: string) { - return buildUrl(url, location.href).href + return buildUrl(url, globalObject.location?.href).href } export function isValidUrl(url: string) {