You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugo+Docsy模板执行报错:无法在bool类型中解析url字段

问题原因

报错的核心是{{ with .mail }}语句会将当前模板上下文(.)切换为.mail的值——也就是布尔值true。此时在with块内访问.url,相当于尝试从布尔值类型中读取url字段,而布尔值根本没有这个字段,所以触发报错。

修复方案

有两种可靠的修复方式:

方案1:改用if判断(推荐)

直接用if做布尔判断,不会切换上下文,能正常访问原上下文里的.url:

{{ $myUrl := "" }}
{{ if .mail }}
  {{ $myUrl = print "mailTo:" .url }}
{{ else }}
  {{ $myUrl = .url }}
{{ end }}

{{ $myUrl }}

方案2:保留with但缓存原上下文

如果一定要用with,可以先把原上下文缓存到变量里,避免上下文切换后无法访问.url:

{{ $myUrl := "" }}
{{ $originalCtx := . }}
{{ with .mail }}
  {{ $myUrl = print "mailTo:" $originalCtx.url }}
{{ else }}
  {{ $myUrl = $originalCtx.url }}
{{ end }}

{{ $myUrl }}
补充说明

你之前的简单真假判断能正常运行,是因为那段代码只输出字符串,没有尝试访问.url——with切换上下文到布尔值后,只要不读取不存在的字段,就不会触发错误。

内容的提问来源于stack exchange,提问作者BATMAN_2008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:39:33