gatsbyjs/gatsby · error · Error

Prism doesn't support language '${language}'.

Error message

Prism doesn't support language '${language}'.

What it means

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.

Source

Thrown at packages/gatsby-remark-prismjs/src/load-prism-language.js:24

  if (components.languages[nameOrAlias]) {
    return nameOrAlias
  }
  return Object.keys(components.languages).find(language => {
    const { alias } = components.languages[language]
    if (!alias) return false
    if (Array.isArray(alias)) {
      return alias.includes(nameOrAlias)
    } else {
      return alias === nameOrAlias
    }
  })
}

module.exports = function loadPrismLanguage(language) {
  const baseLanguage = getBaseLanguageName(language)

  if (!baseLanguage) {
    throw new Error(`Prism doesn't support language '${language}'.`)
  }

  if (Prism.languages[baseLanguage]) {
    // Don't load already loaded language
    return
  }

  const languageData = prismComponents.languages[baseLanguage]

  if (languageData.option === `default`) {
    // Default language has already been loaded by Prism
    return
  }

  if (languageData.require) {
    // Load the required language first
    if (Array.isArray(languageData.require)) {
      languageData.require.forEach(loadPrismLanguage)

View on GitHub (pinned to 8b06340921)

Solutions

  1. Verify the language name matches a Prism-supported language or alias (see prismjs/components).
  2. Correct typos in the code fence language identifier.
  3. Register the language via languageExtensions config if it requires a custom Prism component.
  4. Install additional prismjs language components if available.

Example fix

```javascrpit
// before (typo)
```
```javascript
// after (correct name)
```
Defensive patterns

Strategy: validation

Validate before calling

// Validate language name against Prism's supported languages
const Prism = require('prismjs')
const components = require('prismjs/components')
const supported = new Set([...Object.keys(components.languages)])
if (!supported.has(language)) {
  console.warn(`Language '${language}' not supported by Prism`)
}

Type guard

const isSupportedPrismLanguage = (lang: string, components: any): boolean => {
  if (components.languages[lang]) return true
  return Object.values(components.languages).some((l: any) =>
    Array.isArray(l.alias) ? l.alias.includes(lang) : l.alias === lang
  )
}

Try / catch

try {
  loadPrismLanguage(language)
} catch (e) {
  if (e.message.includes("doesn't support language")) {
    // fallback: render as plain text
  } else throw e
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of gatsbyjs/gatsby@8b06340921 (2026-08-13). Data as JSON: /api/errors/96e23887e98ffe7c. Report an issue: GitHub.