From 8ef9bc1192d523785c7bea8505b4523d2923a8c2 Mon Sep 17 00:00:00 2001 From: Felipe Forbeck Date: Wed, 15 Jan 2025 11:34:50 -0300 Subject: [PATCH] fix: do not add mode: cors when cloudflare workers runtime In cloudflare workers the request fails with: `The 'mode' field on 'RequestInitializerDict' is not implemented.`. Detecting cloudflare environment as advised by cloudflare: https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent --- packages/upload-client/src/blob/add.js | 3 ++- packages/upload-client/src/runtime.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 packages/upload-client/src/runtime.js diff --git a/packages/upload-client/src/blob/add.js b/packages/upload-client/src/blob/add.js index ec1140f0..f60fccf3 100644 --- a/packages/upload-client/src/blob/add.js +++ b/packages/upload-client/src/blob/add.js @@ -9,6 +9,7 @@ import retry, { AbortError } from 'p-retry' import { servicePrincipal, connection } from '../service.js' import { REQUEST_RETRIES } from '../constants.js' import { poll } from '../receipts.js' +import { isCloudflareWorkers } from '../runtime.js' /** * @param {string} url @@ -227,7 +228,7 @@ export async function add( try { const res = await fetchWithUploadProgress(address.url, { method: 'PUT', - mode: 'cors', + ...(!isCloudflareWorkers && { mode: 'cors' }), body: bytes, headers: address.headers, signal: options.signal, diff --git a/packages/upload-client/src/runtime.js b/packages/upload-client/src/runtime.js new file mode 100644 index 00000000..d1483e4c --- /dev/null +++ b/packages/upload-client/src/runtime.js @@ -0,0 +1,4 @@ +/* c8 ignore next 3 */ +export const isCloudflareWorkers = + typeof navigator !== 'undefined' && + navigator?.userAgent === 'Cloudflare-Workers' \ No newline at end of file