快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
目前hugo-teek基本没问题了,想着迁移自己主库md文档(原来使用的是teek博客)到hugo-teek,但是中途报错了,具体报错如下:
关于teek目录很多地方报错,我直接给加 下划线 给注释了:

其它地方一个md报错,我也给注释了:

此时没提示md报错,但整体报错了:(不知道如何排查,经过豆包查看解释如下)

根据错误日志,核心问题是 hot-tags-card.html 第25行 调用 index $tagCount . 时,第二个参数(.)是 nil(空值),而 $tagCount 是 map[string]interface{} 类型(键必须是字符串),导致匹配失败。
这个partial是“热门标签卡片”,逻辑应该是:
$tagCount(标签名 → 文章数量的映射,键是字符串);$tagCount 中取数量。报错说明:
nil(空标签);index。打开路径:D:\hugo-teek-private\hugo-teek-site\themes\hugo-teek\layouts\partials\hot-tags-card.html,找到第25行。
先看第25行前后的代码结构(通常是这样):
1<!-- 示例:常见的错误写法 -->
2{{ $tagCount := .Site.Taxonomies.tags.Counts }} <!-- 构建标签名→数量的map(键是字符串) -->
3{{ range .Site.Taxonomies.tags }} <!-- 遍历标签(这里的“.”是标签对象,不是标签名) -->
4 <span class="tag-count">{{ index $tagCount . }}</span> <!-- 第25行错误:用标签对象当键 -->
5{{ end }}根据实际代码结构,选对应方案:
如果第25行是 index $tagCount .,且循环是 {{ range .Site.Taxonomies.tags }},问题是:
循环中的 . 是「标签对象」,而非「标签名字符串」,需要改成标签名(如 .Name 或 .Title,Hugo标签默认用 .Name)。
修改第25行:
1<!-- 错误写法 -->
2{{ index $tagCount . }}
3
4<!-- 正确写法(用标签名作为键) -->
5{{ index $tagCount .Name }}如果循环中混入了空标签(. 是 nil),需要先过滤空值。
修改循环逻辑(在循环时过滤空标签):
1<!-- 错误写法:直接遍历所有标签,可能包含nil -->
2{{ range .Site.Taxonomies.tags }}
3
4<!-- 正确写法:过滤空标签 + 用标签名当键 -->
5{{ range $tag := .Site.Taxonomies.tags }}
6 {{ if $tag }} <!-- 过滤空标签 -->
7 <!-- 第25行修改为:用标签名取数量,同时加默认值避免报错 -->
8 {{ $count := index $tagCount $tag.Name | default 0 }}
9 <span class="tag-count">{{ $count }}</span>
10 {{ end }}
11{{ end }}如果 $tagCount 不是“标签名→数量”的map,补充兜底逻辑:
1<!-- 1. 确保 $tagCount 是正确的map(键为标签名字符串) -->
2{{ $tagCount := .Site.Taxonomies.tags.Counts | default dict }}
3
4<!-- 2. 遍历标签时过滤空值,取数量时加默认值 -->
5{{ range $tag := .Site.Taxonomies.tags }}
6 {{ if and $tag $tag.Name }} <!-- 确保标签和标签名都存在 -->
7 {{ $count := index $tagCount $tag.Name | default 0 }} <!-- 不存在时显示0 -->
8 <span class="tag-count">{{ $count }}</span>
9 {{ end }}
10{{ end }}修改后保存文件,重新运行 hugo server 构建站点。如果还有报错,补充以下信息以便进一步定位:
hot-tags-card.html 第20-30行的完整代码;$tagCount 是如何定义的(搜索 $tagCount := 所在行)。index map 键 语法中,键必须是字符串/整数,不能是对象或nil;.Name 取标签名(而非直接用 .);if $tag 过滤空值、default 0 兜底,能避免大部分nil相关报错。日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白