Javascript 在Forge Viewer中第二次加载扩展后不会加载
我使用Reactjs开发了Forge查看器 在第二次之后,当我在Forge Viewer中显示图形时,扩展不会加载 未加载的扩展名Javascript 在Forge Viewer中第二次加载扩展后不会加载,javascript,reactjs,typescript,autodesk-forge,Javascript,Reactjs,Typescript,Autodesk Forge,我使用Reactjs开发了Forge查看器 在第二次之后,当我在Forge Viewer中显示图形时,扩展不会加载 未加载的扩展名 Autodesk.ViewCubeUi. Autodesk.BimWalk. Autodesk.Measure. Autodesk.Section. Autodesk.LayerManager. 在当前实现中,每次图形文件更改时都会重新加载查看器脚本 我用一个引用实现了这个脚本 我应该如何解决这个问题 错误日志这是一个ViewCubeUi错误,但其他扩展也是如此
Autodesk.ViewCubeUi.
Autodesk.BimWalk.
Autodesk.Measure.
Autodesk.Section.
Autodesk.LayerManager.
在当前实现中,每次图形文件更改时都会重新加载查看器脚本
我用一个引用实现了这个脚本
我应该如何解决这个问题
错误日志这是一个ViewCubeUi错误,但其他扩展也是如此
Uncaught (in promise) Error: Extension not found: Autodesk.ViewCubeUi. Has it been registered(3)?
at VM26450 viewer3D.min.js:19
(anonymous) @ viewer3D.min.js?v=v7.18:19
Promise.then (async)
loadExtension @ viewer3D.min.js?v=v7.18:19
(anonymous) @ viewer3D.min.js?v=v7.18:24
setTimeout (async)
T.createUI @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
setTimeout (async)
(anonymous) @ viewer3D.min.js?v=v7.18:24
p @ viewer3D.min.js?v=v7.18:19
(anonymous) @ viewer3D.min.js?v=v7.18:24
l @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
forEach.e.<computed> @ viewer3D.min.js?v=v7.18:24
x @ viewer3D.min.js?v=v7.18:24
a @ viewer3D.min.js?v=v7.18:24
Promise.then (async)
x @ viewer3D.min.js?v=v7.18:24
a @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
(anonymous) @ viewer3D.min.js?v=v7.18:24
i @ viewer3D.min.js?v=v7.18:19
密码
查看器脚本的加载方式如下所示。
组件显示图形并处理查看器事件
const version = "7.18"
const cssUrl = `https://developer.api.autodesk.com/modelderivative/v2/viewers/style.min.css?v=v${version}`
const scriptUrl = `https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=v${version}`
import React, {useState, useEffect} from 'react'
interface ScriptLoaderProps {
url: string
onLoad?: () => void
onError?: () => void
}
const ScriptLoader: React.FC<ScriptLoaderProps> = ({url, onLoad, onError, children}) => {
const [ready, setReady] = useState(false)
useEffect(() => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onload = () => {
setReady(true)
if(onLoad) onLoad()
}
if(onError) script.onerror = onError
document.body.appendChild(script)
return () => {
document.body.removeChild(script)
}
}, [url])
if(ready) return <>{children}</>
return <></>
}
const Viewer = () => {
return(
<>
<link rel="stylesheet" type="text/css" href={cssUrl} />
<ScriptLoader url={scriptUrl}>
<ForgeViewer />
</ScriptLoader>
</>
)
}
Chrome 81.0.4044.138官方版本64位
查看器版本:7.18
尽量不要重新加载查看器脚本,否则您可能会遇到奇怪的冲突,或者更准确地说,根据我们的工程加载扩展和其他一些依赖项,您可能会遇到深层次的赛车情况 此问题从早期v7版本开始出现 事实上,使用自己的查看器组件并查看一个示例非常简单-在处理多个组件和重新加载时,只需使用状态控制机制redux等来检查库是否已加载/正在加载以避免冲突
或者,您可以自定义我们不完全支持的此组件,因为它是第三方,您可以在尝试加载脚本之前检查Windows.Autodesk是否已可用…您如何注册扩展?此部分不包括在提供的样板代码中。Cheerri没有注册任何其他扩展。我不使用无头查看器。默认情况下加载所有扩展。感谢您的帮助!我确认了window.Autodesk并避免了错误!