vite 去除modulePreload,无法加载CSS

2,644 阅读1分钟

一个vue3项目,计划在打包项目的时候,去除modulepreload优化。参照官方文档,配置modulePreload 禁用。

build:{
   modulePreload: false,
   ...
}

打包,将代码发到服务器上以后,页面显示就不正常了。在网络里看, CSS文件都没有加载出来。一开始,我以为是因为其他地方引起的这个CSS未加载,没有怀疑到是vite的问题。

在想不通其他可能性之后,又在网上搜了一下vite 去除 modulePreload导致CSS无法正确加载,找到了答案。

vite 动态引入 css 和 modulepreload 用的是同一个方法,估计这也是为啥关闭 modulePreload 之后样式丢失的原因

解决方法就是只配置对js文件移除modulePreload

具体配置如下:

build: {
  modulePreload: {    resolveDependencies(filename, deps) {        return deps.filter(dep => !dep.endsWith('.js'))      }  },   ... 
}

按这样配置之后,再打包,页面就正常显示了。

目前,vite有关这个问题的issue还是处于Open状态,官方还没有彻底解决这个问题。

参考资料

github.com/vitejs/vite…