为什么new URL(url, import.meta.url)本地开发可以打包后就不行?

我要开发一个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.urlundefined,这个感觉很奇怪。我在vite的文档看是直接用的,不用配置什么。

阅读 9.8k
1 个回答
新手上路,请多包涵

经过项目中实际尝试,new URL(url, import.meta.url).href中的第一个参数url不能是完全直接传入,应该使用字符串拼接的方式,例如new URL(./src/assets/images${url}, import.meta.url).href,让该方法中事先存在一部分的地址信息。 经过实验此种方式可以正常在服务器上使用不会报错,个人理解应该是vite在打包编译阶段导致的,具体原因没有细究,有知道的可以留言回复告知。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题