Como solucionar Hugo: can't evaluate field IsServer in type interface {}

Problema:

Al compilar tu sitio Hugo, ves un mensaje de error como el siguiente:

hugo_isserver_error.txt
03:27:57.943	ERROR render of "page" failed: "/opt/buildhome/repo/themes/tailbliss/layouts/_default/baseof.html:5:7": execute of template failed: template: _default/single.html:5:7: executing "_default/single.html" at <partial "head.html" .>: error calling partial: "/opt/buildhome/repo/themes/tailbliss/layouts/partials/head.html:25:6": execute of template failed: template: partials/head.html:25:6: executing "partials/head.html" at <hugo>: can't evaluate field IsServer in type interface {}

Solucion

El problema es causado por Hugo no encontrando .IsServer:

error_excerpt.txt
can't evaluate field IsServer in type interface {}

por ejemplo en el siguiente codigo de template:

hugo_template_example.html
{{ if hugo.IsServer }}
<link rel="stylesheet" href="{{ $styles.RelPermalink }}" />
{{ end }}

Sin embargo, .IsServer solo fue anadido a Hugo en la version 0.120.0, asi que si estas usando una version mas antigua, veras este error..

La solucion es facil. Puedes:

  • Recomendado: Actualiza tu version de Hugo a 0.120.0 o mas nueva. Al momento de escribir esto, la version 0.134.2 es la ultima version.
  • En caso de que eso no sea posible: Elimina el check .IsServer de tu codigo de template. Esto tipicamente no impacta mucho tu sitio (ya que los builds de production no seran impactados en absoluto y los builds de desarrollo hugo serve tipicamente solo seran cambiados ligeramente), pero podrias necesitar probar tu sitio para asegurar que todo funciona como se espera.

Nota: Para Cloudflare Pages puedes establecer la variable de entorno de deployment HUGO_VERSION a 0.120.0 o mas nueva para solucionar este problema. Probe esto con 0.134.2 y funciono bien.


Echa un vistazo a artículos similares por categoría: Hugo