zouyaoji / vue-cesium

🎉 Vue 3.x components for CesiumJS.
https://zouyaoji.top/vue-cesium
MIT License
1.49k stars 321 forks source link

[Bug Report] 3.0.1-beta.12以后版本使用EarthSDK报错 #121

Closed dreamthat closed 3 years ago

dreamthat commented 3 years ago

VueCesium version

3.0.1-beta.12

OS/Browsers version

Win10/Edge

Vue version

3.2.7

Reproduction Link

https://codesandbox.io/s/vue-cesium-start-forked-x1434?file=/src/main.js:320-369

Steps to reproduce

更新Vue-Cesium至3.01-beta 12以上版本, 加载EarthSDK部分代码(main.js):

app.use(VueCesium, { cesiumPath: 'http://earthsdk.com/v/last/XbsjEarth/XbsjEarth.js' });

启动项目后不能正常展示页面。

What is Expected?

浏览器里能正常展示数字地球

What is actually happening?

浏览器端报如下错误: Uncaught (in promise) TypeError: Cannot set property 'show' of undefined at Object._0x16a7f9. [as xbsjCreateViewer] (:8080/vrs/js/XbsjCesium/XbsjCesium.js:9) at _0xf03b73 (:8080/vrs/js/XbsjEarth/XbsjEarth.js:1) at new _0x4f3c3a (:8080/vrs/js/XbsjEarth/XbsjEarth.js:1) at eval (webpack-internal:///./node_modules/vue-cesium/lib/index.esm.js:187) at Generator.next () at a (webpack-internal:///./node_modules/vue-cesium/lib/index.esm.js:187)

zouyaoji commented 3 years ago

已重现,解决中,感谢反馈。

zouyaoji commented 3 years ago

@dreamthat 是EarthSDK的问题。我这边在联系他们反馈解决,您着急的话建议下载他们前一个版本(v1.7.2)。

https://www.earthsdk.com/#/update

zouyaoji commented 3 years ago

@dreamthat 大意了,刚测了一下,以前版本还真没问题,我再看看咋回事。

zouyaoji commented 3 years ago

@dreamthat

查出原因了。

上午请教了CesiumLab的唐总说是 EarthSDK的问题, 因为skyBox配置成了false,和EarthSDK中的部分代码存在冲突。

估计这个问题 earthsdk 一直存在。 但vue-cesium之前版本没有问题的原因是 vc-viewer组件上的skyBox的类型是 Object,没给默认值,初始化的时候options的skyBox是undefined。

后来我发现官方文档上skyBox还支持传false,我就把类型skyBox改成[Object, Boolean]了,也没给默认值,但发现vue把默认值处理成false了。 传到earthsdk正好遇到这问题。

我目前还是把skyBox skyAtmosphere的默认值改为 undefined,测试已经没了这个问题。

用下个版本即可。

目前版本可以给:skyBox ="undefined" :skyAtmosphere="undefined" 暂时避免。

https://codesandbox.io/s/vue-cesium-start-forked-cigy9?file=/src/main.js

zouyaoji commented 3 years ago

已解决,关闭了哈,还有问题的话请再反馈。