Hugo’s [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
These are just a few of the questions most frequently asked by new users.
An error message indicates that a feature is not available. Why? #
When you attempt to use a feature that is not available in the edition that you installed, Hugo throws this error:
this feature is not available in this edition of Hugo
To resolve, install a different edition based on the feature table above. See the [installation] section for details.
Why do I see “Page Not Found” when visiting the home page? #
In the content/_index.md
file:
- Is
draft
set totrue
? - Is the
date
in the future? - Is the
publishDate
in the future? - Is the
expiryDate
in the past?
If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: --buildDrafts
, --buildFuture
, or --buildExpired
.
Why is a given page not published? #
In the content/section/page.md
file, or in the content/section/page/index.md
file:
- Is
draft
set totrue
? - Is the
date
in the future? - Is the
publishDate
in the future? - Is the
expiryDate
in the past?
If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: --buildDrafts
, --buildFuture
, or --buildExpired
.
Why can’t I see any of a page’s descendants? #
You may have an index.md
file instead of an _index.md
file. See
details.
What is the difference between an index.md
file and an _index.md
file?
#
A directory with an index.md file
is a [leaf bundle]. A directory with an _index.md
file is a [branch bundle]. See
details.
Why is my partial template not rendered as expected? #
You may have neglected to pass the required [context] when calling the partial. For example:
{{/* incorrect */}}
{{ partial "_internal/pagination.html" }}
{{/* correct */}}
{{ partial "_internal/pagination.html" . }}
In a template, what’s the difference between :=
and =
when assigning values to variables?
#
Use :=
to initialize a variable, and use =
to assign a value to a variable that has been previously initialized. See
details.
When I paginate a list page, why is the page collection not filtered as specified? #
You are probably invoking the [Paginate
] or [Paginator
] method more than once on the same page. See
details.
Why are there two ways to call a shortcode? #
Use the {{% shortcode %}}
notation if the shortcode template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the
{{< shortcode >}}
notation. See
details.
Can I use environment variables to control configuration? #
Yes. See details.
Why am I seeing inconsistent output from one build to the next? #
The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the --printPathWarnings
command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems.
Why isn’t Hugo’s development server detecting file changes? #
In its default configuration, Hugo’s file watcher may not be able detect file changes when:
- Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition
- Running Hugo locally with project files on a removable drive
- Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols
In these cases, instead of monitoring native file system events, use the --poll
command line flag. For example, to poll the project files every 700 milliseconds, use --poll 700ms
.
Why is my page Scratch or Store missing a value? #
The [Scratch
] and [Store
] methods on a Page
object allow you to create a [scratch pad] on the given page to store and manipulate data. Values are often set within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are not determinate until Hugo renders the page content.
If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop] variable:
{{ $noop := .Content }}
{{ .Store.Get "mykey" }}
You can trigger content rendering with other methods as well. See next FAQ.
Which page methods trigger content rendering? #
The following methods on a Page
object trigger content rendering: Content
, ContentWithoutSummary
, FuzzyWordCount
, Len
, Plain
, PlainWords
, ReadingTime
, Summary
, Truncated
, and WordCount
.