diff --git a/packages/model3d-viewer/src/loader.ts b/packages/model3d-viewer/src/loader.ts index f28303b8d..6c6caac40 100644 --- a/packages/model3d-viewer/src/loader.ts +++ b/packages/model3d-viewer/src/loader.ts @@ -404,7 +404,15 @@ export async function loadModel3dViewerObject( format === 'gltf' ? new TextDecoder().decode(new Uint8Array(data)) : data; const gltf = await new Promise<{ scene: ThreeTypes.Object3D }>( (resolve, reject) => { - loader.parse(payload, basePath, resolve, reject); + loader.parse(payload, basePath, resolve, (error) => { + // GLTFLoader 的 onError 回传的是 ErrorEvent(不是 Error):直接 reject, + // 外层 describeModel3dViewerError 只会拿到「未知错误」,真实解析原因被丢掉。 + const detail = + typeof error === 'object' && error !== null && 'message' in error + ? String((error as { message?: unknown }).message ?? '') + : ''; + reject(new Error(detail.trim() || describeModel3dViewerError(error))); + }); }, ); return gltf.scene;