diff --git a/.changeset/great-experts-chew.md b/.changeset/great-experts-chew.md new file mode 100644 index 00000000000..7d19fb54f3f --- /dev/null +++ b/.changeset/great-experts-chew.md @@ -0,0 +1,14 @@ +--- +"@thirdweb-dev/sdk": patch +--- + +Fix error when fetching data on `vite-node` environment by setting a global variable `TW_SKIP_FETCH_SETUP` to `true`. Fixes https://github.com/thirdweb-dev/js/issues/2002 + +Setting this flag sets `skipFetchSetup` to `true` in [ethers ConnectionInfo](https://docs.ethers.org/v5/api/utils/web/#ConnectionInfo) + +```ts +// set this global variable +globalThis.TW_SKIP_FETCH_SETUP = true; + +// use the thirdweb sdk... +``` diff --git a/packages/sdk/src/evm/constants/urls.ts b/packages/sdk/src/evm/constants/urls.ts index 1a845d87f8d..c5c3d7fc8a8 100644 --- a/packages/sdk/src/evm/constants/urls.ts +++ b/packages/sdk/src/evm/constants/urls.ts @@ -284,6 +284,16 @@ export function getProviderFromRpcUrl( if (existingProvider) { return existingProvider; } + + // TODO: remove below `skipFetchSetup` logic when ethers.js v6 support arrives + let _skipFetchSetup = false; + if ( + typeof globalThis !== "undefined" && + "TW_SKIP_FETCH_SETUP" in globalThis && + typeof (globalThis as any).TW_SKIP_FETCH_SETUP === "boolean" + ) { + _skipFetchSetup = (globalThis as any).TW_SKIP_FETCH_SETUP as boolean; + } // Otherwise, create a new provider on the specific network const newProvider = chainId @@ -292,6 +302,7 @@ export function getProviderFromRpcUrl( { url: rpcUrl, headers, + skipFetchSetup: _skipFetchSetup, }, chainId, ) @@ -299,6 +310,7 @@ export function getProviderFromRpcUrl( new providers.JsonRpcBatchProvider({ url: rpcUrl, headers, + skipFetchSetup: _skipFetchSetup, }); // Save the provider in our cache