故事的起源是我想实现目录定位,但是搜了好久但是一直找不到问题,但终于,我知道这玩意叫TOC 锚点 undefined。
解决的步骤也很简单:
进入你项目根目录的 node_modules\hexo-toc\lib\filter.js
中,把28行~31行修改为:
1 | $title.attr('id', id); |
也就是恢复这次提交,保留旧版本,仅保留28行,其他的内容注释掉。
这样的话,生成的TOC应该就是正常的了。
ps:另外需要注意的是,编译的 markdown 貌似有缓存,因此修改后,你可以再新建一篇文章后再生成,用新文章测试以上手段是否有效修复。旧文章由于缓存问题,可能不会生成新的 HTML(这部分也只是看到现象,暂时没有进行详细了解)。如果新文章确实能够修复此问题,再处理旧文章即可。
还有一个蜜汁办法可以比较快的让修补旧文章的这个缓存问题:
创建一个.md文件
1 | $ hexo n "随便一个名称" |
进入源代码模式,将旧文章拷贝过去,保存,刷新博客界面,就能发现旧的新的都可以用,一个一个旧文章弄过去就可以了。