{"record":{"id":"5f70ac452afe1ffd","repo":"parcel-bundler/parcel","slug":"unknown-style-language-style-lang","errorCode":null,"errorMessage":"Unknown style language: \"${style.lang}\"","messagePattern":"Unknown style language: \"(.+?)\"","errorType":"exception","errorClass":"ThrowableDiagnostic","httpStatus":null,"severity":"error","filePath":"packages/transformers/vue/src/VueTransformer.js","lineNumber":365,"sourceCode":"              )\n            ).toString();\n            if (!style.module) {\n              style.module = MODULE_BY_NAME_RE.test(style.src);\n            }\n            style.lang = extname(style.src).slice(1);\n          }\n          switch (style.lang) {\n            case 'less':\n            case 'stylus':\n            case 'styl':\n            case 'scss':\n            case 'sass':\n            case 'css':\n            case undefined:\n              break;\n            default:\n              // TODO: codeframe\n              throw new ThrowableDiagnostic({\n                diagnostic: {\n                  message: md`Unknown style language: \"${style.lang}\"`,\n                  origin: '@parcel/transformer-vue',\n                },\n              });\n          }\n          let styleComp = await compiler.compileStyleAsync({\n            filename: asset.filePath,\n            source: style.content,\n            modules: style.module,\n            preprocessLang: style.lang || 'css',\n            scoped: style.scoped,\n            inMap: style.src ? undefined : style.map,\n            isProd: options.mode === 'production',\n            id,\n          });\n          if (styleComp.errors.length) {\n            throw new ThrowableDiagnostic({","sourceCodeStart":347,"sourceCodeEnd":383,"githubUrl":"https://github.com/parcel-bundler/parcel/blob/59484858a1a0bcbb71f74088956bb437a2db6505/packages/transformers/vue/src/VueTransformer.js#L347-L383","documentation":"Thrown by @parcel/transformer-vue when a <style lang=\"...\"> value is not in the supported set (less, stylus, styl, scss, sass, css, or undefined). The switch allows these and breaks; the default branch throws. Note Parcel does NOT pre-install these preprocessors — it relies on the style compiler to invoke them.","triggerScenarios":"style.lang set to an unsupported value (e.g. 'stylus-sheet', 'postcss', 'windicss') or a typo like 'scssz'.","commonSituations":"Typo in the lang attribute, using 'postcss' or 'windicss' (not supported as a Vue style lang here), or migrating from a loader that accepted extra values.","solutions":["Use one of: less, stylus/styl, scss, sass, css, or omit lang.","Correct any typo in the existing lang attribute.","If you need PostCSS/Windicss, configure it at the Parcel CSS layer rather than via Vue style lang."],"exampleFix":"// before\n<style lang=\"scssz\">...</style>\n// after\n<style lang=\"scss\">...</style>","handlingStrategy":"validation","validationCode":"const supported = new Set(['less','stylus','styl','scss','sass','css', undefined]);\nif (!supported.has(style.lang)) {\n  throw new Error(`Unsupported style lang '${style.lang}'; use less, stylus, styl, scss, sass, or css.`);\n}","typeGuard":"const SUPPORTED_STYLE_LANGS = new Set(['less','stylus','styl','scss','sass','css', undefined]);\nfunction isSupportedStyleLang(lang) {\n  return SUPPORTED_STYLE_LANGS.has(lang);\n}","tryCatchPattern":null,"preventionTips":["Restrict style lang to less/stylus/styl/scss/sass/css.","Configure PostCSS/Windicss at the Parcel CSS layer, not via Vue style lang.","Double-check spelling of the lang attribute."],"tags":["vue","style","parcel-transformer","validation"],"backgroundTag":null,"analyzedSha":"59484858a1a0bcbb71f74088956bb437a2db6505","analyzedAt":"2026-08-13T04:06:35.925Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}