查看器不再把 glTF 解析失败吞成「未知错误」

- packages/model3d-viewer/src/loader.ts:GLTFLoader 的 onError 回传 ErrorEvent,改为先取它的 message 再包成 Error 抛出,外层报错能带出真实解析原因,而不是退化成「未知错误」
This commit is contained in:
2026-09-24 17:24:40 +08:00
parent 61cfb8800d
commit 5d68749534
+9 -1
View File
@@ -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;