我只能说,没有基础确实就只能大声叹气,直接丢失人权了。
问题描述
giscus 的评论系统莫名其妙地掉了,在我将官方的配置文件搬过来之后。
对的,就是这么简单,因为 hugo 对于外部组件的加载失败是没有给任何的 errorlog 的,完全不知道从哪里查起。只能硬着头皮一点一点读整个网站的结构系统。
问题定位
我是在打开 F12 工具,一点一点对着网页找元素找出来的那个空空的框。我甚至可以说你绝对不敢相信,它渲染出来了和没渲染出来一模一样……感谢便利的检查元素工具……
具体来说,这一块“卡片”是渲染出来了的,但是里面确实空的,且由于 style 的缺失,所以从外面看不出来这里渲染成功了的。
那么其实也就很好定位问题了,肯定是哪里少了相对应的数据导致组件不能正常工作,所以我又去 F12 工具里面找元素的值,检查它的递归调用是否出了一点什么问题。果不其然,这个东西最后的值是空的。
问题解决
我就选择去一个一个翻 html 的相互调用(这里面又是 hugo 的语法看的我有点小小的乱)并且依次在每个 html 上添加官方(giscus)给的 script 标签,发现都能正常运行。这时候我考虑到可能是不是传值的时候出了一点问题,遂去看了看每一层之间的变量名的关系。果不其然,我在 config.yaml 中找到的变量名和 giscus.html 中引用的变量名不一样。你绝对不敢信,hugo 使用的变量名和官网(giscus)的变量名不一样导致了引用出问题了。但是其实也不能怪 hugo 吧,只能说这个东西是历史遗留问题()因为 hugo 语法中变量名不允许出现 ‘-’ ,所以 hugo 就把变量名做了一定程度的简省和合并,即类似于 data-repo –> repo 的操作,并且在递归调用中顺理成章地采用了自己的变量名(要不然怎么能跑得起来)最后对直接粘贴官方文档的人造成了毁灭性打击(
后话
但是其实我觉得还好? 至少这个 bug 强行要求我去比较彻底地理解了 hugo 的网站结构,具体一些有用没用的知识说不定也涨了?
还有一个点,在 md 文件头中请不要出现 comments 字段,一旦出现就没有评论加载,原因不明……
所以 hugo 你的文档里怎么一句不提啊啊啊