Как исправить Hugo: can't evaluate field IsServer in type interface {}

Проблема:

При сборке вашего сайта Hugo вы видите сообщение об ошибке, подобное следующему:

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 {}

Решение

Проблема вызвана тем, что Hugo не находит .IsServer:

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

например, в следующем коде шаблона:

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

Однако .IsServer был добавлен в Hugo только в версии 0.120.0, поэтому, если вы используете более старую версию, вы увидите эту ошибку..

Исправить легко. Вы можете либо:

  • Рекомендуется: Обновите версию Hugo до 0.120.0 или новее. На момент написания этого поста версия 0.134.2 является последней.
  • Если это невозможно: Удалите проверку .IsServer из вашего кода шаблона. Обычно это не сильно влияет на ваш сайт (поскольку production-сборки вообще не затрагиваются, а dev-сборки hugo serve обычно изменяются лишь незначительно), но вам может потребоваться протестировать ваш сайт, чтобы убедиться, что всё работает как ожидается.

Примечание: Для Cloudflare Pages вы можете установить переменную окружения развёртывания HUGO_VERSION в 0.120.0 или новее, чтобы исправить эту проблему. Я тестировал это с 0.134.2, и всё работало нормально.


Check out similar posts by category: Hugo