32 mars3d 官方 demo 可以跑起来, 但是自己拷贝的 demo 跑不起来

news2024/11/13 7:58:27

前言

这个问题是 同事碰到的一个问题 

主要的影响因素在于 官方的 demo 从 mars3d-cesium 中暴露了一部分文件作为 http 服务, 然后 我们自己的 case 里面没有这部分服务, 然后 导致 js 访问不到 

以及 大部分的 css, js, img 等等 静态资源 访问不到 


 

Cesium is not defined 的问题定位 

项目启动之后 console 报错如下

fcc3e0dec65e42faba71b301bfc00a85.png

 

首先是比较一下 demo 代码的调整

主要是比较 HelloWorld.vue 和 map.vue 和 vue.config.js 和 package.json

比较结果为, HelloWorld.vue 和 map.vue 无明显的感动, 仅仅是 codestyle 的差异

vue.config.js 仅仅是注释掉了 devServer 的配置  

package.json 仅仅是注释掉了一些元数据信息

14212af663e7451caa15c7dad1248f13.png

 

 

重新安装依赖

这种 not defined 另外一种可能是 安装的依赖存在问题, 因此 删除 node_modules 之后重新 npm install

然后 重新启动项目, 发现问题 依然存在

 

 

确定报错的位置

因为从 报错的堆栈信息中, 我们无法确认具体 是因为什么报错

因此 我们来进行一个简单的排除法 来定位是哪里 引起的 mars3d 的库函数的报错

注释 mars3d 的相关依赖, 以及使用的地方, 直到 页面可以正常使用

a3dd2554be354123a6561a17830c2d62.png

 

正常页面如下

104b3521ed034520b9a573c83b0e6451.png

 

然后发现 只要是有 “import * as mars3d from "mars3d";”相关 页面就会报错

47d96895fb5d42e0981923db62ac8508.png

 

 

根据 mars3d 检索所有的 .vue, .js 判断问题

.vue 中如下, 可以看到 仅仅是 HelloWorld.vue 和 map.vue 这两个业务模块中有使用

其他的诸如 App.vue 等等 vue 的基础代码中没有 mars3d 的使用

因此 我们可以不管 .vue

8f0cceee24004a5aa4db27a8af2c43f8.png

 

再来看一下 .js

可以看到, 只有 vue.config.js 中有 mars3d 的关键字, 然后 我们来查看一下 详细的代码

977e2f01a61c48258df191547569d4a5.png

 

这块代码如下, 先只看注释 else 排除使用 mars3d-cesium

然后 我们这里缺少的就是 Cesium

然后 对比正常的 demo 项目 mars3d-vue2

e9b0239ac2e64188bb46aa523d614cc2.png

 

 

然后搜索一下 “VUE_APP_MARS3D_SOURCE”, 可以看到 mars3d-vue2 中是有 “VUE_APP_MARS3D_SOURCE=module” 的配置的

然后将 .env 拷贝到 mars3d_test, 之后 重启项目

VUE_APP_MARS3D_SOURCE 的作用可以参考这块的 README.md

ca6cb1e8d9414e03a6e1f39d5049eba2.png

 

更新 .env 增加环境变量如下, 然后 启动项目

2410e4818b5e4464a30bd42bb71391ac.png

 

可以发现是 大部分功能是正常了, 但是 貌似还存在一些小问题

可能是 样式问题 或者 js加载异常导致的样式问题

8c3e9ad8e9ff4fa38b0ae713f09dfeb9.png

 

 

根据 VUE_APP_MARS3D_SOURCE 的备注探讨其他的解决方式

其实产生 这个问题的原因是在 README.md 的 第三章节

三种导入 mars3d-cesium 库的方式, 第一种就是 mars3d-vue2 的方式, 只是我们这里 未加环境变量为 ”--dev” 的配置

第二种是直接通过 css,js 导入, 直接在 public/index.html 下面添加 css, js 的依赖

第三种是基于当前 项目提供 css, js 的服务

556278995a464d6b8e33d379e663da06.png

 

 

在 public/index.html 中直接导入 css/js

5b97a905c1f64224ac946dcdd50528ce.png

 

然后 效果如下, 可以看到 也没有上面的 样式错乱问题了

00bc9334ccea4a44822233895ab64dbe.png

 

 

下载官方 sdk 放在 public 下面由本项目提供这部分的 js/css/img 的服务

调整如下, 拷贝相关资源, 更新 index.html 

更新 VUE_APP_MARS3D_SOURCE 为 local 

fbcf629599bf45ddb542e8741e6c9135.png

 

然后启动项目情况如下 

d259fff5c4de4e37818522b3fae0b329.png

 

 

存在的样式问题的调试排查

上面问题解决了之后, 我这边还会出现一个样式问题如下

4c444870cd6f479ab0ec364a39654958.png

 

这个问题的排查方式如下, 一般要么就是 js, 要么就是 css 的问题

找一个存在问题的元素, 来查看 相关 listener, style, 比如我这里 是以左下角的一个 ”帮助切换按钮” 为例

 

 

js 这块的差异

先来看 js 这块, 正常的情况下 js 的回调如下

acdecc488f8f47069b441cb1ab9b3036.png

 

然后 我们再来看一下 异常的情况, 然后 确认一下 click 的回调是否一致

可以看到的事 二者的是一样的, 然后 我们再来 查看 css 这边

eb32feedd595403bb8b55cb1a2ce47cb.png

 

 

css 这块的差异

然后再来看 正常的这一边的 css

7cfcfaa04fb84a5d9ff2bb39a8d48582.png

 

异常的情况下的 css

可以看到 相比于正常情况是 缺少一部分 css 的, 然后 我们来项目中搜索一下 这部分的 css

b4fe77f73d5a4165ba6756418351b13a.png

 

 

以 “.cesium-navigation-button-right” 为例, 可以找到如下, 前者是该 vue组件 的 css, 后者是 build 生成的 css, 我们应该使用的是后者

8870deac028e467dbbc2b73052366c28.png

 

这个 css 是在这里处理的, 可能因为 某些原因 编译, 没有吧这个 css 编译进去

cc7b2d79baf24b018c7763e08feffb01.png

 

具体的原因 我们先不探究, 先解决问题, 我们的 map.vue 会引用 “/Users/jerry/WebstormProjects/mars3d_test/node_modules/mars3d/dist/mars3d.css”

我们先将目标 css 复制进去, 然后 重新启动项目 看一下 效果

19179daf70214b6da6057b007a6a7f19.png

 

 

现在 页面正常了

14e8ea7796e04066806a74739ae4b4a3.png

 

 

完 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙应用开发-录音保存并播放音频

功能介绍: 录音并保存为m4a格式的音频,然后播放该音频,参考文档使用AVRecorder开发音频录制功能(ArkTS),更详细接口信息请查看接口文档:ohos.multimedia.media (媒体服务)。 知识点: 熟悉使用AVRecorder…

MySQL之MVCC如何实现可重复读和提交读

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ 👀👀👀 个人博客:小奥的博客 👍👍👍:个人CSDN ⭐️⭐️⭐️:Github传送门 🍹 本人24应届生一枚,技术和水平有…

商城小程序项目实现监控的可观测性最佳实践

前言 微信小程序是一种轻量级的应用程序,用户可以在微信内直接使用,无需下载安装。它具有独立的开发框架和生态系统,支持丰富的功能和交互,包括社交、购物、服务等。 观测云对微信小程序的监控能够实时收集性能指标、错误日志和…

BUUCTF-Misc14

[WUSTCTF2020]find_me1 1.打开附件 是一个学校的校徽 2.盲文解密 发现图片属性里的备注是一串盲文 用在线盲文解密 3.得到flag

使用U盘重装CentOS7系统

下载CentOS7 系统镜像 制作启动U盘之前,首先要准备一个系统镜像,这里我在CentOS官网直接下载镜像文件: CentOS官网 为了保证下载速度,这里我使用阿里云镜像下载: 阿里云镜像 如上图所示,我需要一个带UI界…

【微服务】Gateway

文章目录 1.基本介绍官方文档:https://springdoc.cn/spring-cloud-gateway/#gateway-starter1.引出网关2.使用网关服务架构图3.Gateway网络拓扑图(背下来)4.Gateway特性5.Gateway核心组件1.基本介绍2.断言3.过滤 6.Gateway工作机制 2.搭建Gat…

Linux环境基础开发工具使用——yum and vim

本篇将会介绍平时在Linux中开发常用到的一些工具,其中包括:软件包管理器 — yum,Liunx中的开发工具。具体的介绍了 yum 的相关操作以及 yum 源,同时还介绍了 windows与虚拟机如何进行的关联。然后对Liunx中的开发工具进行了详细的…

agent利用知识来做规划:《KnowAgent: Knowledge-Augmented Planning for LLM-Based Agents》笔记

文章目录 简介KnowAgent思路准备知识Action Knowledge的定义Planning Path Generation with Action KnowledgePlanning Path Refinement via Knowledgeable Self-LearningKnowAgent的实验结果 总结参考资料 简介 《KnowAgent: Knowledge-Augmented Planning for LLM-Based Age…

摆扫式(whisk broom)和推扫式(push broom)卫星传感器介绍

目前,我们卫星传感器主要有两大类型:摆扫式(whisk broom)和推扫式(push broom)。为了更好的理解和使用卫星影像数据,我们需要简单了解下这两种传感器工作原理。 摆扫式:Whisk Broom…

zabbix进阶

知识点补充 zabbix server在主机上运行服务,端口号为10050,zabbix agent 在被监控机器上运行(源码下载)主要完成对cpu,磁盘的信息采集,端口号为10051 zabbix 软件结构组成: 1.Zabbix Web GUI …

城市内涝水文水动力模型:慧天【HTWATER】

查看详情>>> 城市内涝水文水动力模型:慧天【HTWATER】 【城市内涝水文水动力模型介绍】 慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存…

兼职副业大揭秘:六个潜力满满的赚钱途径

亲爱的朋友,你对兼职副业充满好奇与期待,这非常好!在此,我将为你分享一些能够助你赚取额外收入的兼职副业建议。以下是六个颇具潜力的兼职副业方向,希望能为你的探索之路提供些许启发。 1,网络调查与市场洞…

C++ 动态规划

文章目录 一、简介二、举个栗子2.1斐波那契数列2.2最短路径(DFS) 参考资料 一、简介 感觉动态规划非常的实用,因此这里整理一下相关资料。动态规划(Dynamic Programming):简称 DP,是一种优化算法…

后端常问面经之Java基础

基本数据类型 Java中有8种基本数据类型: 6种数字类型: 4种整数型:byte、short、int、long 2种浮点型:float、double 1种字符类型:char 1种布尔类型:boolean 数据类型的默认值以及所占空间如下&#x…

C++ STL - 优先级队列及其模拟实现

目录 0. 引言 1. priority_queue 介绍 1.1 构造函数 1.2 priority_queue 接口函数使用 1.3 仿函数 1.4 题目练习 2. priority_queue 模拟实现 2.1基本框架: 2.2 默认构造函数 2.3 基本函数 2.4 堆的向上以及向下调整 0. 引言 优先队列 (priority_queu…

Flask python :logging日志功能使用

logging日志的使用 一、了解flask日志1.1、Loggers记录器1.2、Handlers 处理器1.3、Formatters 格式化器 二、使用日志2.1、官网上的一个简单的示例2.2、基本配置2.3、具体使用示例2.4、运行 三、写在最后 一、了解flask日志 日志是一种非常重要的工具,可以帮助开发…

[技术杂谈]解决windows上出现文件名太长错误

最近执行python setup.py install总是失败,提示文件名太长发现网上有取消限制文件名长度,测试发现改完注册表无需重启cmd就生效了。但是有时候会失败,现在方法放这。 转到Windows“开始”,然后键入REGEDIT。选择注册表编辑器 选…

Linux内核中的进程调度-进程调度基础

前言 一、进程的概念 1.概述 2.ps和top命令 3.总结 二、进程的生命周期 1.进程状态文字描述 2.进程状态程序中的体现 3.进程状态的切换 三、task_struct数据结构简述 1.数据结构成员简述 2.需要注意的成员: 3.进程优先级 ①、优先级的代码表示 ②、Linux内核下的进…

蓝桥杯2023真题-幸运数字

目录 进制转换: 思路 代码 题目链接: 0幸运数字 - 蓝桥云课 (lanqiao.cn) 本题就考的进制转换问题,要将十进制5转换成二进制,通过%2,和/2的交替使用即可完成,所得余数就是转换成的二进制各位的值,转换…

浅谈如何自我实现一个消息队列服务器(3)—— 细节分析

文章目录 2.2 消息存储在文件时涉及到的流对象2.3 序列化、反序列化的方法2.3.1 JSON的ObjectMapper2.3.2 ObjectOutputStream 、 ObjectInputStream2.3.3 第三方库的Hessian2.3.4 protobuffer2.3.5 thrift 2.4 使用类MessageFileManager封装文件存储操作2.4.1 sendMessage()实…