zouyaoji / vue-cesium

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

按照文档按需加载会出问题,貌似按需加载还是有些问题的,有些组件使用vc开头的没有内部引用(例如绘制量算等)。 #87

Closed FrozenQ closed 3 years ago

FrozenQ commented 3 years ago

[BUG 反馈] 按照文档按需加载会出问题

浏览器版本号

Google Chrome 版本 87.0.4280.66(正式版本) (64 位)

Vue 版本号

2.6.11

组件库版本号

2.1.6

现象描述

按需加载会出现  Cannot read property 'scriptPromise' of undefined

完整异常信息

Uncaught (in promise) TypeError: Cannot read property 'scriptPromise' of undefined
    at VueComponent.beforeInit$ (index.js?22a4:1038)
    at tryCatch (runtime.js?96cf:63)
    at Generator.invoke [as _invoke] (runtime.js?96cf:293)
    at Generator.eval [as next] (runtime.js?96cf:118)
    at tryCatch (runtime.js?96cf:63)
    at invoke (runtime.js?96cf:154)
    at eval (runtime.js?96cf:189)
    at new Promise (<anonymous>)
    at callInvokeWithMethodAndArg (runtime.js?96cf:188)
    at AsyncIterator.enqueue [as _invoke] (runtime.js?96cf:211)

在线示例 / 仓库 URL

复现代码

赋值按需加载的demo,其余没有变化。就是文档的示例代码,我按需加载引用viewer

预期输出

出现viewer的视图

实际输出

没有出现视图
zouyaoji commented 3 years ago

因为量算、绘制组件用到了~ vc-collection-primitive等图元组件,具体,所以这几个组件也得引入才行 - -~

FrozenQ commented 3 years ago

是的,我看源码的时候也发现,感觉不是很友好。不过单独引用viewer,按照按需加载的方式处理,就会报上面说的那个错。 Cannot read property 'scriptPromise' of undefined

zouyaoji commented 3 years ago

除了量算等引用了基础组件的按需引入也有问题吗?方便传一个项目我测测?

FrozenQ commented 3 years ago

可以的话,我今晚上传一份,后续会给出链接。

zouyaoji commented 3 years ago

就这儿就能传附件压缩包。 我回头看看能不能把逻辑改为,在按需引入 量算组件情况时,如果没有引入基础组件的话 自动把基础组件引入了,体验就好些了吧。

FrozenQ commented 3 years ago

hello-vue-cesium.zip

zouyaoji commented 3 years ago

嗯 重现了, 我按需引入 $vc没定义所以报错了。 下个版本解决一下。 你暂时加这句话对付一下即可: Vue.prototype.$vc = {}

image

FrozenQ commented 3 years ago

单独添加的话,有些组件其实不是很好处理。我在观察源码的时候,有留意到一些组件,用到不同语言的部分。所以我写了如下的方法。 import lang from 'xxxxx/lang/zh-hans.js' Vue.prototype.$vc = { VERSION: 'x.x.x', lang }

希望有助于其他类似问题的人。 如果有时间的话,我觉得可以让一些组件更加规范化,使得按需引入更加方便。

zouyaoji commented 3 years ago

嗯 单独添加确实有这个问题 昨晚都已经解决了 我再测测没问题就发一个版本 谢谢反馈哈

zouyaoji commented 3 years ago

@FrozenQ 嗨,我测试差不多了,您有时间可以试试。把附件下载解压到您项目目录的 node_modules\vue-cesium\lib覆盖即可。 之前教您加的这句话“Vue.prototype.$vc = { VERSION: 'x.x.x', lang }”不需要了哈。 lib.zip

FrozenQ commented 3 years ago

ok,我看看,谢谢啦

zouyaoji commented 3 years ago

嗯 感谢,有啥问题再反馈。我先提交了。如果没啥大问题我就发布NPM了。