我要开发一个doc下载的功能,doc是放在项目内的,然后我使用new URL(url, import.meta.url).href
获取这个文件的路径。
在本地开发的时候,url
无论是相对路径或者绝对路径都可以成功下载,但是推到服务器上就报错TypeError: Failed to construct 'URL': Invalid URL
,请教一下大佬这是为什么呢?
文档的解释是:
如果给定的基本 URL 或生成的 URL 不是有效的 URL 链接,则会抛出一个TypeError。
但是我本地开发没问题是不是就意味着路径是有效的,然后我把doc放public下,也尝试过相对路径或者绝对路径都不行。另外打印出来import.meta.url
是undefined
,这个感觉很奇怪。我在vite的文档看是直接用的,不用配置什么。
经过项目中实际尝试,new URL(url, import.meta.url).href中的第一个参数url不能是完全直接传入,应该使用字符串拼接的方式,例如new URL(
./src/assets/images${url}
, import.meta.url).href,让该方法中事先存在一部分的地址信息。 经过实验此种方式可以正常在服务器上使用不会报错,个人理解应该是vite在打包编译阶段导致的,具体原因没有细究,有知道的可以留言回复告知。