You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

7.40.0版本Autodesk Viewer销毁时控制台报错(禁用加载spinner场景)

Autodesk Viewer 7.40.0 禁用加载spinner后销毁流程报错的解决方案

问题触发逻辑

该控制台报错是7.40.0版本的框架兼容缺陷,完整触发链路为:

  • 初始化Viewer时配置disabledSpinner = true参数
  • 该配置会直接跳过Spinner组件的createDom方法执行,spinner对应的DOM元素从未被创建,实例上的domElement属性始终为undefined
  • 执行Viewer销毁流程时,框架未对spinner的属性做存在性判断,直接尝试访问domElement执行DOM移除操作,最终触发空值访问的控制台报错

可落地解决方法

临时兼容方案(无需升级依赖)

  • 调用Viewer销毁方法tearDown()前,对spinner实例的空属性做兜底处理,避免空值访问:
    // 执行销毁逻辑前运行
    const spinner = viewer.loadingSpin
    if (spinner && spinner.domElement === undefined) {
      // 给未创建DOM的spinner补上空占位元素,执行完销毁逻辑后不会对页面造成任何影响
      spinner.domElement = document.createElement('div')
      spinner.domElement.remove()
    }
    viewer.tearDown()
    
  • 覆写spinner的原生销毁方法,跳过无DOM场景下的销毁逻辑:
    // Viewer初始化完成后执行一次
    const spinner = viewer.loadingSpin
    const originalDestroy = spinner.destroy.bind(spinner)
    spinner.destroy = () => {
      // 未完成DOM创建时直接终止销毁流程,不做DOM移除操作
      if (!spinner.domElement) return
      originalDestroy()
    }
    

配置替代方案(实现同等禁用效果)

如果不需要修改Viewer底层逻辑,仅需实现spinner视觉隐藏的效果,可替换原有的disabledSpinner = true配置:

  • 移除初始化参数里的disabledSpinner = true配置
  • 等Viewer初始化完成、spinner的DOM元素正常挂载后,直接给spinner容器加上隐藏样式:
    // Viewer初始化完成回调中执行
    viewer.loadingSpin.domElement.style.display = 'none'
    
    该方式会正常走完spinner的DOM创建全流程,销毁流程可以正常访问domElement属性,不会触发空值报错,视觉效果与直接禁用spinner完全一致。

根源修复方案

该问题为7.40.0版本的已知缺陷,Autodesk官方在7.41.0及以上版本中已经做了逻辑兼容:销毁流程会先判断spinner的domElement是否存在,不存在时直接跳过DOM移除步骤,从根源上避免空值报错。项目依赖允许的情况下,直接将Viewer版本升级到7.41.0及以上版本即可彻底解决该问题。


内容的提问来源于stack exchange,提问作者Dawe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 19:36:08