概要
Hugoでビルドを実施したときにエラーが発生しました。その、解決方法を紹介します。
問題について
Hugoで、Webサイトを構築しています。そのWebサイトについて、hugo
コマンドでHTMLを生成したときに、エラーが発生するようになりました。
エラーは次のような内容です。
ERROR render of “/posts” failed: “baseof.html:9:8”: execute of template failed: template: list.html:9:8: executing “list.html” at <partial “head.html” .>: error calling partial: “themes/PaperMod/layouts/partials/head.html:9:15”: execute of template failed: template: _partials/templates/twitter_cards.html:9:15: executing “partials/templates/twitter_cards.html” at <partial “partials/templates/_funcs/get-page-images” .>: error calling partial: partial “partials/templates/_funcs/get-page-images” not found
複数のエラーが発生していたため、一部のみ抜粋しています。
エラーの内容を確認すると、利用しているPaperModテーマのファイルに問題があるようです。ちゃんと部分ファイル(partial file)の読み込みができていないようです。
解決方法
このエラーについて調べてみると、次の情報がヒットしました。
https://github.com/adityatelange/hugo-PaperMod/pull/1726
このIssue(正確にはPull Request)では、同じエラーについて書かれています。
原因としては、Hugoの利用しているバージョンがv146であるからのようです。バージョンが上がったことで、既存のコードでエラーが発生するようになったようです。
解決に向けてPull Requestが作成されているため、いずれは利用するPaperModに修正が取り込まれ、v146でも利用できるようになるものと思われます。しかし、記事を書いている現在ではまだ修正が取り込まれていません。
そこで、ひとまずの解決策として古いバージョンのHugoでビルドするようにしました。
Hugoの古いバージョンをインストールするのも面倒なので、今回はDockerのコンテナを利用します。Dockerのイメージには、hugomodsのものを利用しています。
Dockerを利用したビルドのコマンドは次になります。
docker run -v .:/src -p 1313:1313 --rm hugomods/hugo:exts-0.145.0
もしも、server機能を利用したい場合は次のようにします。
docker run -v .:/src -p 1313:1313 --rm hugomods/hugo:exts-0.145.0 server
根本的な解決ではありませんが、これでエラーが発生しないようになりました。
さいごに
PaperModは比較的メンテナンスされているテーマという印象でしたので、Hugoのアップデートでビルドできなくなるのは意外でした。
ひとまず、応急処置的な解決策ですが動作するようになったのでよかったです。何でもかんでも最新のバージョンを利用するようにするというのも考えものかもしれません。