【hexo】next踩坑TOC锚点undefined问题

hexo 搭建博客,文章的导航栏不能正常使用:文章左侧导航栏可以正常生成,但是在点击导航栏后并不能跳转到文章的对应位置,查看网页源代码,Console 报错如下:

1
Uncaught TypeError: Cannot read property 'top' of undefined

报错原因

Markdown 的插件并未渲染 heading 的 id ,所以导致锚点失效。

原来会被编译成 <h2 id="title">title</h2>

而现在会被编译成 <h2><span id="title">title</span></h2>

解决方案

进入你项目根目录的 node_modules/hexo-toc/lib/filter.js 中,把28行~31行修改为:

1
$title.attr('id', id);

即,仅保留28行,其他的内容注释掉。

问题得以解决。

参考链接