LoginSignup
0
0

Hugoで久しぶりにbuildしたらERROR render of "page" failedになった

Last updated at Posted at 2024-02-07

はじめに

年に1、2回の頻度でしか更新しないものの、そこそこ複雑な構成のHugoプロジェクトがあります。

これは同じ頻度で更新されるCSVデータに強く依存していて他のプロジェクトと統合することが難しく、メンテナンスは頻繁には行っていません。

データを更新したのでコンテンツを生成したところ、Hugoのバージョンが上がっているためエラーになってしまいました。

エラーメッセージで検索すると主な原因はGoのテンプレートライブラリが変更されたことのようだとは分かったのですが、根本原因は複数あるようですぐに解決できなかったのでまとめておきます。

原因が異なるGo Templateに関連した類似の障害情報

エラー#1. js.Build

エラーの内容
Start building sites … 
hugo v0.122.0+extended linux/amd64 BuildDate=unknown

ERROR render of "page" failed: ".../layouts/_default/baseof.html:4:7": execute of template failed: \
  template: _default/single.html:4:7: executing "_default/single.html" at <partial "head.html" .>: \
  error calling partial: ".../layouts/partials/head.html:23:54": execute of \
  template failed: template: partials/head.html:23:54: \
  executing "partials/head.html" at <js.Build>: error calling Build: no Resource provided in transformation
...

対応

HugoでJavaScriptのコードをminifyした後の処理で問題が発生しています。
この場合の原因は元のHTMLコードにありました。

最後のno Resource provided in transformationのメッセージが示しているように変換対象のファイルにアクセスできなくなっていることが原因です。

元のコードは次のようになっています。

{{- $jsdefault := resources.Get "js/default.js" | js.Build (dict "minify" "true") }}
<script type="text/javascript" src="{{ $jsdefault }}"></script>

これは"js/default.js"がassetsディレクトリに存在しないことが原因でした。static/jsディレクトリから必要なファイルをassets/jsディレクトリに移動し、js.Buildが無事に動作しました。

エラー#2. 空のHTMLコメント

また似たようなエラーですが、少し内容の違うメッセージが出現しました。

別のエラーメッセージ
Start building sites … 
hugo v0.122.0+extended linux/amd64 BuildDate=unknown

ERROR render of "page" failed: ".../layouts/_default/baseof.html:4:6": execute of template failed: \
template: summary/single.html:4:6: executing " summary/single.html" at <partial "head.html" .>: error calling partial: \
execute of template failed: html/template:partials/head.html: \
ends in a non-text context: {stateJS delimNone urlPartNone jsCtxRegexp attrNone elementScript <nil>}
Total in 35 ms

この時は次のようなHTMLコードに問題がありました。

--- a/.../hugo/layouts/partials/head.html
+++ b/.../hugo/layouts/partials/head.html
@@ -26,7 +26,7 @@
 {{ $style := resources.Get "sass/default.scss" | toCSS | minify | fingerprint }}
 <link rel="stylesheet" type="text/css" href="{{ $style.RelPermalink }}" />
 {{ $jsdefault := resources.Get "js/default.js" | js.Build (dict "minify" "true") }}
-<script type="text/javascript" src="{{ $jsdefault.RelPermalink }}" ></script>
+<script type="text/javascript" src="{{ $jsdefault.RelPermalink }}" ><!-- --></script>
 
 <!-- print specific settings -->
 {{ $style := resources.Get "sass/print.scss" | toCSS | fingerprint }}

なぜかscriptタグの中に空のHTMLコメントが残っていて、この部分が原因でエラーになっていました。

まとめ

こんな事でもエラーになるのかと分っていれば対応も難しくないと思いますが、Hugoをいろいろ使っていても始めて遭遇したエラーだったので少し時間がかかりました。

参考になれば幸いです。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0