{"record":{"id":"96e23887e98ffe7c","repo":"gatsbyjs/gatsby","slug":"prism-doesn-t-support-language-language","errorCode":null,"errorMessage":"Prism doesn't support language '${language}'.","messagePattern":"Prism doesn't support language '(.+?)'\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/gatsby-remark-prismjs/src/load-prism-language.js","lineNumber":24,"sourceCode":"  if (components.languages[nameOrAlias]) {\n    return nameOrAlias\n  }\n  return Object.keys(components.languages).find(language => {\n    const { alias } = components.languages[language]\n    if (!alias) return false\n    if (Array.isArray(alias)) {\n      return alias.includes(nameOrAlias)\n    } else {\n      return alias === nameOrAlias\n    }\n  })\n}\n\nmodule.exports = function loadPrismLanguage(language) {\n  const baseLanguage = getBaseLanguageName(language)\n\n  if (!baseLanguage) {\n    throw new Error(`Prism doesn't support language '${language}'.`)\n  }\n\n  if (Prism.languages[baseLanguage]) {\n    // Don't load already loaded language\n    return\n  }\n\n  const languageData = prismComponents.languages[baseLanguage]\n\n  if (languageData.option === `default`) {\n    // Default language has already been loaded by Prism\n    return\n  }\n\n  if (languageData.require) {\n    // Load the required language first\n    if (Array.isArray(languageData.require)) {\n      languageData.require.forEach(loadPrismLanguage)","sourceCodeStart":6,"sourceCodeEnd":42,"githubUrl":"https://github.com/gatsbyjs/gatsby/blob/8b06340921ffdf23125a365b9c9923690cb62ce6/packages/gatsby-remark-prismjs/src/load-prism-language.js#L6-L42","documentation":"Thrown by loadPrismLanguage in gatsby-remark-prismjs when the requested language name or alias cannot be resolved to a known Prism language via getBaseLanguageName(). Prism's components registry has no matching entry or alias for the given string.","triggerScenarios":"getBaseLanguageName(language) returns undefined because the language string is not a key in prismComponents.languages and is not listed as an alias of any language.","commonSituations":"A markdown code fence uses a language Prism doesn't bundle (e.g., a niche language), a typo in the language name (e.g., 'javascrpit'), or an alias not registered in the installed Prism version.","solutions":["Verify the language name matches a Prism-supported language or alias (see prismjs/components).","Correct typos in the code fence language identifier.","Register the language via languageExtensions config if it requires a custom Prism component.","Install additional prismjs language components if available."],"exampleFix":"```javascrpit\n// before (typo)\n```\n```javascript\n// after (correct name)\n```","handlingStrategy":"validation","validationCode":"// Validate language name against Prism's supported languages\nconst Prism = require('prismjs')\nconst components = require('prismjs/components')\nconst supported = new Set([...Object.keys(components.languages)])\nif (!supported.has(language)) {\n  console.warn(`Language '${language}' not supported by Prism`)\n}","typeGuard":"const isSupportedPrismLanguage = (lang: string, components: any): boolean => {\n  if (components.languages[lang]) return true\n  return Object.values(components.languages).some((l: any) =>\n    Array.isArray(l.alias) ? l.alias.includes(lang) : l.alias === lang\n  )\n}","tryCatchPattern":"try {\n  loadPrismLanguage(language)\n} catch (e) {\n  if (e.message.includes(\"doesn't support language\")) {\n    // fallback: render as plain text\n  } else throw e\n}","preventionTips":["Verify language names against the Prism components list before using in code fences.","Register custom languages via languageExtensions if Prism doesn't bundle them.","Add a markdown lint rule to catch unsupported language identifiers."],"tags":["gatsby","prismjs","remark","language","syntax-highlighting"],"backgroundTag":null,"analyzedSha":"8b06340921ffdf23125a365b9c9923690cb62ce6","analyzedAt":"2026-08-13T02:36:21.405Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}