vue3 vite js 项目开发中,在使用cesium时,我们需要vite-plugin-cesium插件来辅助,在项目打包后,如果是相对地址的话没有什么问题,如果base设置了地址后,那么打包出来的页面路径会出现。
vite-plugin-cesium介绍
比如配置了七牛的话,打包出来的路径是下面的情况,缺少了一个斜杠,每次打包都需要手动修改,实在难受.
<link rel="stylesheet" href="/images.wanjunshijie.com/demo/cesium/vue3/cesium/Widgets/widgets.css">
<script src="/images.wanjunshijie.com/demo/cesium/vue3/cesium/Cesium.js"></script>
修改后
<link rel="stylesheet" href="//images.wanjunshijie.com/demo/cesium/vue3/cesium/Widgets/widgets.css">
<script src="//images.wanjunshijie.com/demo/cesium/vue3/cesium/Cesium.js"></script>
排查插件代码
不得已,只能去排查一下vite-plugin-cesium插件的源码,发现是normalizePath方法造成的,
normalizePath作用
normalizePath
函数的作用是将文件路径转换为平台的规范形式,以用户可以理解的形式显示它们,这样可以比较相对路径和绝对路径。在R语言中,这个函数常用于确保路径是标准化的,避免因为路径格式问题导致的错误。
具体来说,normalizePath
会处理路径字符串,将其转换为完全限定的路径名。例如,它会解析出..
和.
,并将斜杠转换为当前操作系统默认的路径分隔符。这个函数还可以检查路径是否真实存在,并根据参数设置返回错误或警告。
函数的基本用法如下:
normalizePath(path, winslash = "\\", mustWork = NA)
path
:文件路径的字符向量。winslash
:在Windows系统上使用的路径分隔符,可以是正斜杠/
或反斜杠\\
。mustWork
:逻辑值,如果为TRUE
,则在无法确定结果时给出错误;如果为NA
,则给出警告。
例如,你可以使用normalizePath
来获取R的安装路径或者库的路径,这在设置工作环境或者查找文件时非常有用。
transformIndexHtml() {
const tags: HtmlTagDescriptor[] = [
{
tag: 'link',
attrs: {
rel: 'stylesheet',
href: normalizePath(CESIUM_BASE_URL + 'Widgets/widgets.css')
}
}
];
if (isBuild && !rebuildCesium) {
tags.push({
tag: 'script',
attrs: {
src: normalizePath(CESIUM_BASE_URL + 'Cesium.js')
}
});
}
return tags;
}
修改后的代码
这里我们去掉normalizePath方法
transformIndexHtml() {
const tags: HtmlTagDescriptor[] = [
{
tag: 'link',
attrs: {
rel: 'stylesheet',
href: CESIUM_BASE_URL + 'Widgets/widgets.css'
}
}
];
if (isBuild && !rebuildCesium) {
tags.push({
tag: 'script',
attrs: {
src: CESIUM_BASE_URL + 'Cesium.js'
}
});
}
return tags;
}
修改后上传git
这里我们使用github上自己的版本就解决了,vite-plugin-cesium插件配置域名后地址出错的问题了。
"vite-plugin-cesium": "github:yelingkong/vite-plugin-cesium",