gohugoio/hugo · error
unsupported Media Type
Error message
unsupported Media Type: %q
What it means
Thrown when the entry resource's MediaType SubType is not javascript, typescript, tsx, jsx, or css. esbuild can only compile these media types as entry points.
Solutions
- Pass a JS/TS/JSX/TSX/CSS resource as the entry point.
- If you must rename, set TargetPath with a correct extension so MediaType resolves correctly.
Defensive patterns
Strategy: type-guard
Validate before calling
switch opts.MediaType.SubType {
case media.Builtin.JavascriptType.SubType,
media.Builtin.TypeScriptType.SubType,
media.Builtin.TSXType.SubType,
media.Builtin.JSXType.SubType,
media.Builtin.CSSType.SubType:
// ok
default:
return fmt.Errorf("unsupported Media Type: %q", opts.MediaType)
} Type guard
func isBuildableMediaType(m media.Type) bool {
switch m.SubType {
case media.Builtin.JavascriptType.SubType,
media.Builtin.TypeScriptType.SubType,
media.Builtin.TSXType.SubType,
media.Builtin.JSXType.SubType,
media.Builtin.CSSType.SubType:
return true
}
return false
} Prevention
- Validate the resource's MediaType.SubType at the call site.
- Ensure assets carry correct extensions so suffix-to-mediatype mapping works.
- When in doubt, log .MediaType before calling Build.
When it happens
Trigger: Calling js.Build on a resource whose MediaType SubType is something like plain, json, or svg. The switch at options.go:331 falls through to the default branch.
Common situations: Resource was looked up with the wrong suffix; user expects js.Build to handle arbitrary text; site media type config overrides the defaults and breaks the suffix mapping.
Related errors
- id must be set
- id must not contain forward slashes
- invalid engine version
- invalid loader
- unsupported drop type
AI-assisted analysis of gohugoio/hugo@52c9bd7908 (2026-08-09).
Data as JSON: /api/errors/63aa131d562270f1.
Report an issue: GitHub.
Appendix: source
Thrown at internal/js/esbuild/options.go:343
mediaType := opts.MediaType
if mediaType.IsZero() {
mediaType = media.Builtin.JavascriptType
}
var loader api.Loader
switch mediaType.SubType {
case media.Builtin.JavascriptType.SubType:
loader = api.LoaderJS
case media.Builtin.TypeScriptType.SubType:
loader = api.LoaderTS
case media.Builtin.TSXType.SubType:
loader = api.LoaderTSX
case media.Builtin.JSXType.SubType:
loader = api.LoaderJSX
case media.Builtin.CSSType.SubType:
loader = api.LoaderCSS
default:
err = fmt.Errorf("unsupported Media Type: %q", opts.MediaType)
return
}
var format api.Format
// One of: iife, cjs, esm
switch opts.Format {
case "", "iife":
format = api.FormatIIFE
case "esm":
format = api.FormatESModule
case "cjs":
format = api.FormatCommonJS
default:
err = fmt.Errorf("unsupported script output format: %q", opts.Format)
return
}
var jsx api.JSXView on GitHub (pinned to 52c9bd7908)