So in Hugo you use the . to access variables and other information related to the page/site. .Title or .Resources.GetMatch "image" At first it seems simple, however once you go out of context it changes.

When it happed to me the error was very vague:
execute of template failed: panic in Execute: reflect: Method on nil interface value. See "https://github.com/gohugoio/hugo/issues/5327" for the reason why we cannot provide a better error message for this."
Hugo documentation doesn’t talk about it when mentioning variables. It does in the template introduction though, like they expect you to read it in order. 🙄

The basics is that . changes. You have a few ways to work with it, you can call the root . by calling $., or you can store it in a variable $Page := ..

Régis Philibert has a really good blog post you should read.