Hexo 404 及 Mermaid 图表渲染问题排查记录
Hexo 404 及 Mermaid 图表渲染问题排查记录
作为 Hexo 用户,我最近也遇到了不少恼人的问题,特别是 Mermaid 图表无法渲染以及部署后出现 404 错误。这里记录一下整个排查和解决过程,希望能给遇到类似问题的朋友一点参考。
一、Mermaid 图表渲染问题与项目重建
最初的问题是博客中的 Mermaid 图表无法正常显示。在尝试了各种插件配置和主题调整后,我决定采取最彻底的方式:重建整个 Hexo 项目。
重建过程概览:
-
备份: 在动手前,备份了
source
(文章)、_config.yml
(站点配置)、_config.next.yml
(Next 主题配置) 和package.json
(插件列表)。 -
删除旧项目: 在终端中进入
blog
目录的上一级,执行rm -rf blog
。 -
初始化新项目: 运行
hexo init blog
,然后cd blog
。 -
安装插件和主题: 重新安装了
hexo-filter-mermaid-diagrams
、hexo-deployer-git
等必要插件,并克隆安装了 Next 主题。 -
恢复配置和文章: 将备份的配置文件覆盖新生成的文件,把文章复制回
source
目录。 -
测试: 运行
hexo clean && hexo g && hexo s
。
重建后,Mermaid 图表问题依旧存在,这让我意识到问题可能不只在 Hexo 本身。
二、浏览器端排查
既然 Hexo 配置看起来没问题,我将注意力转向了浏览器。
浏览器排查步骤:
-
无痕模式测试: 在 Chrome 或 Safari 中打开无痕窗口,访问
http://localhost:4000/
。如果图表在此模式下正常显示,那问题多半是某个浏览器扩展程序(比如广告拦截插件)造成的。 -
开发者工具控制台: 如果无痕模式也无效,那就打开开发者工具(F12 或右键“检查”),切换到“控制台”(Console)选项卡,刷新页面。仔细查看是否有红色错误信息。这些信息是前端脚本加载或执行失败的直接线索。
三、版本兼容性问题
经过反复尝试,我开始思考是否是 Hexo 及其组件的版本兼容性问题。Hexo 的生态更新较快,老版本可能无法完美支持新插件或主题的特性。最终,通过彻底重建并确保所有组件都更新到最新、相互兼容的版本,之前遇到的许多奇怪问题才得以解决。这表明,统一组件版本对于 Hexo 博客的稳定性非常重要。
四、404 错误与 new_post_name
配置
在解决了渲染问题后,部署到线上又遇到了新的 404 错误。排查发现,一个不显眼的配置项是罪魁祸首:_config.yml
中的 new_post_name
。
问题根源:
-
如果
new_post_name
设置为:category/title
,Hexo 生成文章时会创建没有.md
后缀的文件(例如public/tech/my-article
)。 -
Hexo 本地服务器可以正确处理这类文件,但大多数标准 Web 服务器(如 Nginx、GitHub Pages)在收到
http://yourdomain.com/tech/my-article
这样的请求时,会因为找不到明确的.html
文件而返回 404。
解决方案:
将 _config.yml
中的 new_post_name
修改为:
YAML
1 | new_post_name: :category/:title.md |
修改后,务必执行 hexo clean && hexo g
清理并重新生成所有文件,然后重新部署。 这样 Hexo 就会生成带有 .html
扩展名的文件(例如 public/tech/my-article/index.html
),Web 服务器就能正常识别并提供内容了。
总结
这次 Hexo 排查经历让我学到不少:
-
彻底重建是解决复杂环境问题的有效手段。
-
浏览器端排查是定位前端渲染问题的关键。
-
版本兼容性对 Hexo 博客至关重要,尽量保持各组件版本统一。
-
new_post_name
这样的小细节也能导致部署后出现大面积 404。
希望这篇记录能帮到同样在使用 Hexo 的你。