本文主要记录出现问题,去找问题,踩了一些坑,最后回归本源找到问题并解决问题的过程
问题
本地hexo s启服务能正确显示,推到远端github或者博客上就无法显示
本地正常显示:
远端博客无法渲染:
找问题的过程
怀疑主题没有做很好的兼容
一开始是怀疑这个问题的,因为这个主题的作者太佛系,介绍也就一句话,issue也少,fork人气也不高
如下两句话,还是废话...
更关键的,这个文档还是16年的,如今3年过去了...技术怎么着也得更新了吧...
于是傻傻的继续往下做实验
怀疑插件问题
之所以怀疑这个问题,是因为google相关问题后,一堆出现推荐xxx插件的博文,点开一看其实很多都差不多,到处复制而已
然后我也屁颠屁颠试咯下,结果仍然是不行
emmm...前前后后实验各种插件,各种折腾,环境各种被玩坏,一上午基本都在这种折腾中过去了
- hexo-math
- hexo-katex
- hexo-renderer-mathjax
- hexo-renderer-pandoc
- ...
备份的重要性
这里强调下,在找问题的过程中,如果需要改变环境配置、插件、或者其他的你不能一一记下的东西时,最好先把目前稳定的环境打个包backup一下,避免后面改出问题来了,也没法回到目前的稳定版本
回到最开始状态
折腾了快一上午了,仍然解决不了我目前的问题 ,于是发现似乎是上面两个假设不太成立...
最后整理一下郁闷的心情,决定从头开始再分析一遍
如今啊,发现问题就上来一顿Google,有时候确实能解决不少问题
而有时候,却让人疏忽了真正解决问题的方法和能力
看看时间,已经到饭点了,随手抓起一个面包,灌一口水,重新打起精神
这次先加载最初出问题的相对稳定的那个版本
重新编译生成静态网页,启服务,访问,本地依然完美,推到博客依然失败
但是这次仔细观察,发现远端出现了一点不一样的地方
瞬间一个机灵,怕是问题在这里了,果断点了上去
看到这里,我心里预感,这次应该是找到问题了,估计是被拦截脚本了,继续加载
果然,点了加载脚本就能显示公式了,但是这里出现了不安全,https也被横杀了
终于找到问题
其实,到了这里问题已经被找到了,原因就是网页中需要加载不信任的js脚本,而网站默认不加载,导致了公式没法被js渲染出来
接下来就是怎么解决这个问题了,总不能每次都让人点这个小x盾
,再让人点加载不安全的脚本
吧,难道还得写个博客访问指南么...
一个字 low...
解决问题
关闭https
一种方法是关闭自己博客的https链接,直接http访问
因为我的博客是挂载在github.io上的,默认开启了https,关闭方法如下:
- 找到github上的xxx.github.io的repo
- 进入settings页签
- 找到如下,把Enforce https取消勾选即可
脚本链接选择https
上面的方法虽然可行,但是牺牲掉了一定的安全性,安全出身的我果然不能这样忘本
那就选择第二条路吧:在mathjax脚本中修改http脚本链接到https
方法如下:
- 定位到:
xxx\node_modules\hexo-renderer-mathjax\mathjax.html
- 把原来的:
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
修改为:
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
- 再重新编译,推送,访问:
hexo clean
hexo g
hexo d
Job done !