我在react/next网站上有一个3D项目,对一些用户在Chrome中导致一些问题。错误(THREE.WebGLRenderer: Error creating WebGL context.
)导致整个页面崩溃。并非适用于所有浏览器和所有机器。不过,在一台Macbook上安装Chrome浏览器总是这样。我怀疑这可能与创建WebGL上下文的错误有关。三js chrome?
恐怕我不能在这一点上解决崩溃的根本原因,但我需要找到一个方法来"保存"。剩下的部分。因此,当它发生时,只有受影响的部分消失,而不是整个页面。我试着把它放在一个try/catch
,但没有帮助(也许是因为它是一个"未处理的运行时错误")。
是否有办法防止整个页面崩溃?
所讨论的部分在<Suspense>
<Suspense fallback={<Spinner />}>
<Canvas
dpr={Math.max(window.devicePixelRatio, 2)}
camera={{ fov: 43, near: 0.1, far: 2000, position: [0, 0, 8] }}
>
<ambientLight intensity={0.7} />
<pointLight position={[5, 5, 5]} />
<Object3D file={file} />
</Canvas>
</Suspense>
移除<Canvas>
时没有错误,可以"隔离"吗?<Canvas>
不知怎么的?
@react-three/fiber
升级到v8(目前在7.0.29)
尝试使用react-error-boundary库添加错误边界,它应该处理运行时错误