Destiner's Notes

Astro: "Language does not exist" error

31 January 2022

Problem

You might encounter Language does not exist or Unable to load the language errors in console when working on your Astro site. It might look like this in your terminal:

15:48 [astro] Server started                               800ms
15:48 [astro] Local: http://localhost:3000/
15:49 [astro] 200 /                                        897ms
15:49 [astro] 200 /                                        208ms
15:49 [astro] 200 /                                        7ms
15:49 [astro] 200 /blog/                                   1604ms
Language does not exist: vue
Unable to load the language: vue
15:49 [astro] 200 /blog/                                   235ms
Language does not exist: vue
Unable to load the language: vue
15:49 [astro] 200 /blog/post/using-vue-components-inside-astro/ 151ms

Explanation

While it’s not clear from the error text, this error is not directly related to Astro. It’s coming from the Prism plugin for Remark. Prism is the syntax highlighting engine and Remark is a library that adds plugin support for markdown files.

Simply put, the error means that the syntax in question is not supported by Prism.

For example, if you have a code snippet like that in your file:

‛‛‛vue
<template>
  <div>Demo</div>
</template>

<script setup lang="ts">
</script>
‛‛‛

It will lead to Language does not exist: vue error.

Solution

Make sure your syntax highlighting labels are valid. If you still get that issue, it means that Prism doesn’t support that syntax yet. In that case, you may want to use a similar syntax. For example, you can use html instead of vue or svelte, and tsx/jsx instead of react.

Here’s the list of all syntaxes supported by Prism.