From 6720a3e73043a652291d491a75499fc85e86496a Mon Sep 17 00:00:00 2001 From: plum <40649341+plum-k@users.noreply.github.com> Date: Fri, 10 Apr 2026 02:09:08 +0800 Subject: [PATCH] fix(sdk): capture loader ref in unpackGroup to prevent race condition on done() cleanup --- packages/sdk/lib/core/loader/Package.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sdk/lib/core/loader/Package.ts b/packages/sdk/lib/core/loader/Package.ts index 37f0bc9..89ffcf9 100644 --- a/packages/sdk/lib/core/loader/Package.ts +++ b/packages/sdk/lib/core/loader/Package.ts @@ -1337,6 +1337,9 @@ export class Package { //const db = window.VIEWPORT.modules["db"]; //const dbTable = `${useProjectState.getState().sceneId}-${useProjectState.getState().info.id}`; + // 在调用时捕获 loader 引用,防止 done() 清除 this.loader 后重试路径报错 + const loader = this.loader; + // map 存储 json 解析完成后执行的 function; key 为 uuid const funcMap = new Map(); @@ -1433,7 +1436,8 @@ export class Package { const parse = (json) => { if (check(json.object, json)) { - this.loader.parse(json, (group) => { + if (!loader) return; + loader.parse(json, (group) => { const bones: Bone[] = []; group.getObjectsByProperty("type", "Bone", bones); if (bones.length > 0) {