TOC 锚点 undefined

故事的起源是我想实现目录定位,但是搜了好久但是一直找不到问题,但终于,我知道这玩意叫TOC 锚点 undefined。

解决的步骤也很简单:
进入你项目根目录的 node_modules\hexo-toc\lib\filter.js 中,把28行~31行修改为:

1
2
3
4
$title.attr('id', id);
// $title.children('a').remove();
// $title.html( '<span id="' + id + '">' + $title.html() + '</span>' );
// $title.removeAttr('id');

也就是恢复这次提交,保留旧版本,仅保留28行,其他的内容注释掉。

这样的话,生成的TOC应该就是正常的了。

ps:另外需要注意的是,编译的 markdown 貌似有缓存,因此修改后,你可以再新建一篇文章后再生成,用新文章测试以上手段是否有效修复。旧文章由于缓存问题,可能不会生成新的 HTML(这部分也只是看到现象,暂时没有进行详细了解)。如果新文章确实能够修复此问题,再处理旧文章即可。

还有一个蜜汁办法可以比较快的让修补旧文章的这个缓存问题:

创建一个.md文件

1
$ hexo n "随便一个名称"

进入源代码模式,将旧文章拷贝过去,保存,刷新博客界面,就能发现旧的新的都可以用,一个一个旧文章弄过去就可以了。