TypeError: Cannot read properties of null (reading ‘length’)

Being the Javascript newbie that I am…
Javascript errors are still a mystery, more so if using Chrome/Chromium.
With Firefox the error was actually more clear.

TypeError: Cannot read properties of null (reading 'length')
means you have a variable that you’re checking it’s property ‘length’ to be a certain value but the variable is null.

Explanation:

In this case localStorage’s ‘urls’ key or rather value of the ‘urls’ key was empty and JSON.parse transformed that to null.
So if you check for urls.length to be greater than 0, you can’t do it and receive this error message.

How do you solve it?

This is the Javascript (and Typescript) way to check if a variable isn’t null and then check its property if it isn’t.
I know, logically this makes no sense, because it’s a logical AND. But hey, it’s Javascript so you don’t have to understand, you have to believe. 😉 HTH

Using gin with pongo2/v4 and embedded templates

You’d like to use pongo2/v4 with gin and embed templates with go:embed.

I’m using cobra for my cli parsing and commands.
So

edit cmd/ui.go

ui/templates.go

ui/templates/base.html.twig

ui/templates/layout.html.twig

ui/templates/index.html.twig

and finally run

to download packages

What have we done?

  • In ui/templates.go we said that the directory templates, which is a subdirectory of ui/ should be embedded as the exported variable Templates
  • In line 36 of cmd/ui.go we imported that variable and stripped it of its templates/ prefix
  • line 41 we turned that into a HttpFileSystem and passed that to pongo2’s FileSystemLoader
  • line 42 then creates a renderer that is compatible with pongo2/v4
  • line 43 we assign that renderer to be gin’s HTML renderer

Any questions -> leave a comment