From 36bc1e95b73bae2fa480feacdfd0d55c424d38fb Mon Sep 17 00:00:00 2001 From: lianwenwu Date: Mon, 29 Dec 2025 09:03:07 +0800 Subject: [PATCH 1/2] fix(useScriptTag): convert Event to Error in promise rejection Certain sites reject errors with an Event object, not an Error. This causes issues with global uncaught exception handlers that expect Error objects, resulting in confusing error messages like 'Event Event (type=error) captured as promise rejection'. This fix converts Event objects to proper Error objects before rejecting the promise, while preserving the original event for debugging purposes via error.event property. --- packages/core/package.json | 2 +- packages/core/src/useScriptTag/index.ts | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 9f9914f7..da1781cb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@reactuses/core", - "version": "6.1.6", + "version": "6.1.7", "license": "Unlicense", "homepage": "https://www.reactuse.com/", "repository": { diff --git a/packages/core/src/useScriptTag/index.ts b/packages/core/src/useScriptTag/index.ts index c303b3ab..e0de9fef 100644 --- a/packages/core/src/useScriptTag/index.ts +++ b/packages/core/src/useScriptTag/index.ts @@ -98,11 +98,19 @@ export const useScriptTag: UseScriptTag = ( // Event listeners el.addEventListener('error', event => { setStatus(event.type === 'load' ? 'ready' : 'error') - return reject(event) + const error = new Error(`Failed to load script: ${src}`) + error.name = 'ScriptLoadError' + // Preserve the original event for debugging + ;(error as any).event = event + return reject(error) }) el.addEventListener('abort', event => { setStatus(event.type === 'load' ? 'ready' : 'error') - return reject(event) + const error = new Error(`Script load aborted: ${src}`) + error.name = 'ScriptLoadAbortError' + // Preserve the original event for debugging + ;(error as any).event = event + return reject(error) }) el.addEventListener('load', event => { setStatus(event.type === 'load' ? 'ready' : 'error') From d637c244ddccc51b99414badb6a66b2979fdd232 Mon Sep 17 00:00:00 2001 From: lianwenwu Date: Mon, 29 Dec 2025 09:09:20 +0800 Subject: [PATCH 2/2] chore: release v6.1.7 --- packages/core/scripts/publish.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/scripts/publish.ts b/packages/core/scripts/publish.ts index 1b5c6021..85eba51f 100644 --- a/packages/core/scripts/publish.ts +++ b/packages/core/scripts/publish.ts @@ -5,7 +5,7 @@ import { version } from '../package.json' execSync('npm run build', { stdio: 'inherit' }) -let command = 'npm publish --access public' +let command = 'npm publish --access public --registry=https://registry.npmjs.org/' if (version.includes('beta')) { command += ' --tag beta'