VuePress构建SSR时为什么静态资源路径不对?
在开发VuePress主题时遇到了奇怪的问题,当我用vite build构建SSR版本,生成的HTML里静态资源路径变成了绝对路径。比如在主题布局文件里写的<link rel="stylesheet" href="./styles/index.css" rel="external nofollow" >,构建后变成/Users/username/project/styles/index.css"导致404。
我尝试改用require('@/styles/index.css'),但SSR输出的HTML里还是显示完整本地路径。本地用vuepress dev预览没问题,只有打包后的SSR版本有这个问题。搞不懂为啥SSR会直接把本地路径带出来,有没有什么配置能控制资源路径的生成方式?
href="./xxx"这种写法时容易出问题。改成这样:
在布局文件中用
,并在vuepress.config.js中配置public目录:把
index.css放到public/styles/下面,构建时就不会带上本地路径了,亲测有效。vite.config.js里的build.rollupOptions.output.assetFileNames控制资源路径,配合publicDir挪公共资源解决这问题。试试这个配置:
把
index.css放public/styles/目录,HTML里写/styles/index.css,SSR构建就正常了。