From 5d6874953483b577d09e7f16ff9755be33be28f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Thu, 24 Sep 2026 17:24:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=99=A8=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E6=8A=8A=20glTF=20=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=90=9E=E6=88=90=E3=80=8C=E6=9C=AA=E7=9F=A5=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - packages/model3d-viewer/src/loader.ts:GLTFLoader 的 onError 回传 ErrorEvent,改为先取它的 message 再包成 Error 抛出,外层报错能带出真实解析原因,而不是退化成「未知错误」 --- packages/model3d-viewer/src/loader.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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;