kataras/iris · error

%s: %w

Error message

%s: %w

What it means

The Jet engine's Load walks its asset filesystem and reads each template with the asset helper; on read failure it wraps the underlying error with the template path (fmt.Errorf("%s: %w", path, err)) before attempting ParseTemplate. It mirrors error 131 but for the Jet template engine.

Source

Thrown at view/jet.go:255

		if info == nil || info.IsDir() {
			return nil
		}

		if s.extension != "" {
			if !strings.HasSuffix(path, s.extension) {
				return nil
			}
		}

		if s.rootDir == rootDirName {
			path = strings.TrimPrefix(path, rootDirName)
			path = strings.TrimPrefix(path, "/")
		}

		buf, err := asset(s.fs, path)
		if err != nil {
			return fmt.Errorf("%s: %w", path, err)
		}

		return s.ParseTemplate(path, string(buf))
	})
}

// ParseTemplate accepts a name and contnets to parse and cache a template.
// This parser does not support funcs per template. Use the `AddFunc` instead.
func (s *JetEngine) ParseTemplate(name string, contents string) error {
	s.initSet()

	_, err := s.Set.Parse(name, contents)
	return err
}

func (s *JetEngine) initSet() {
	s.mu.Lock()
	if s.Set == nil {

View on GitHub (pinned to 7bedaf55a0)

Solutions

  1. Read the wrapped inner error to identify the missing/unreadable file and restore or fix its path.
  2. Ensure the embedded FS covers the Jet template root (//go:embed views and matching directory name).
  3. Make the loader's rootDirName match the actual top-level folder in the fs so trimmed paths resolve.
  4. Trigger Load() during boot to fail fast instead of at first render.

Example fix

// before
//go:embed templates/*.html
var fs embed.FS
engine := jet.New(fs, ".jet")
// after
//go:embed templates
var fs embed.FS
engine := jet.New(fs, ".jet")
Defensive patterns

Strategy: validation

Validate before calling

if _, err := fs.ReadFile(jetFS, "views/index.jet"); err != {
    log.Fatalf("jet templates not embedded/readable: %v", err)
}

Try / catch

if err := jetEngine.Load(); err != nil {
    log.Fatalf("jet engine load failed (path in message): %v", err)
}

Prevention

When it happens

Trigger: JetEngine.Load iterating registered paths where reading path from s.fs fails — missing embedded directory, wrong rootDirName trimming, or an OS-fs file deleted/renamed after registration.

Common situations: Jet templates stored under a folder not included in go:embed; loader root folder name differs from the embedded top-level directory so trimmed paths point to nonexistent entries; renaming .jet files without re-embedding.

Related errors


AI-assisted analysis of kataras/iris@7bedaf55a0 (2026-08-30). Data as JSON: /api/errors/3ab32014ddc7aed7. Report an issue: GitHub.