Hexo生成的发布站点样式简陋,与hexo server预览效果不一致
嘿,这个问题我熟得很!本地用hexo server预览全正常,一hexo generate就变“裸奔”页面,大概率是这几个原因,挨个排查就行:
相对路径配置错误
Hexo默认用绝对路径加载资源(比如/css/style.css),但你直接打开本地public/index.html时用的是file://协议,浏览器会从系统根目录找资源,而不是public文件夹下。解决方法:
打开站点根目录的_config.yml,把url改成空字符串(url: ''),root改成相对路径(root: ./),然后重新执行hexo clean && hexo generate。如果是要部署到子目录,比如https://xxx.com/blog,那url设为你的域名加子目录,root设为/blog/。缓存残留导致资源未更新
Hexo的缓存有时候会“偷懒”,没把主题的最新静态资源拷贝到public目录。直接执行hexo clean清空缓存,再跑hexo generate,基本能解决大部分资源缺失的问题。记住,每次生成前clean是个好习惯!主题资源引用路径错误
如果你修改过主题的模板文件(比如layout下的.ejs/.pug文件),里面的资源引用可能用了硬编码的绝对路径。比如原本写的/js/main.js,要改成相对路径./js/main.js,这样本地打开静态页时才会从当前目录找资源。文件权限问题(仅Linux/macOS)
偶尔会碰到public目录下的CSS/JS文件权限不足,浏览器加载时被拦截。可以在终端执行chmod -R 755 public/,给所有文件设置可读可执行权限,再打开页面试试。
先从hexo clean && hexo generate开始试,再检查_config.yml的路径配置,这俩步骤解决90%的这类问题。要是还不行,就去主题的模板文件里找资源引用的路径有没有问题。
内容的提问来源于stack exchange,提问作者A_toaster

