{"record":{"id":"63aa131d562270f1","repo":"gohugoio/hugo","slug":"unsupported-media-type-q","errorCode":null,"errorMessage":"unsupported Media Type: %q","messagePattern":"unsupported Media Type: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/js/esbuild/options.go","lineNumber":343,"sourceCode":"\tmediaType := opts.MediaType\n\tif mediaType.IsZero() {\n\t\tmediaType = media.Builtin.JavascriptType\n\t}\n\n\tvar loader api.Loader\n\tswitch mediaType.SubType {\n\tcase media.Builtin.JavascriptType.SubType:\n\t\tloader = api.LoaderJS\n\tcase media.Builtin.TypeScriptType.SubType:\n\t\tloader = api.LoaderTS\n\tcase media.Builtin.TSXType.SubType:\n\t\tloader = api.LoaderTSX\n\tcase media.Builtin.JSXType.SubType:\n\t\tloader = api.LoaderJSX\n\tcase media.Builtin.CSSType.SubType:\n\t\tloader = api.LoaderCSS\n\tdefault:\n\t\terr = fmt.Errorf(\"unsupported Media Type: %q\", opts.MediaType)\n\t\treturn\n\t}\n\n\tvar format api.Format\n\t// One of: iife, cjs, esm\n\tswitch opts.Format {\n\tcase \"\", \"iife\":\n\t\tformat = api.FormatIIFE\n\tcase \"esm\":\n\t\tformat = api.FormatESModule\n\tcase \"cjs\":\n\t\tformat = api.FormatCommonJS\n\tdefault:\n\t\terr = fmt.Errorf(\"unsupported script output format: %q\", opts.Format)\n\t\treturn\n\t}\n\n\tvar jsx api.JSX","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/gohugoio/hugo/blob/52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2/internal/js/esbuild/options.go#L325-L361","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"switch opts.MediaType.SubType {\ncase media.Builtin.JavascriptType.SubType,\n    media.Builtin.TypeScriptType.SubType,\n    media.Builtin.TSXType.SubType,\n    media.Builtin.JSXType.SubType,\n    media.Builtin.CSSType.SubType:\n    // ok\ndefault:\n    return fmt.Errorf(\"unsupported Media Type: %q\", opts.MediaType)\n}","typeGuard":"func isBuildableMediaType(m media.Type) bool {\n    switch m.SubType {\n    case media.Builtin.JavascriptType.SubType,\n        media.Builtin.TypeScriptType.SubType,\n        media.Builtin.TSXType.SubType,\n        media.Builtin.JSXType.SubType,\n        media.Builtin.CSSType.SubType:\n        return true\n    }\n    return false\n}","tryCatchPattern":null,"preventionTips":["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."],"tags":["esbuild","media-type","validation"],"backgroundTag":null,"analyzedSha":"52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2","analyzedAt":"2026-08-09T21:49:36.660Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}