The language "*" doesn't exist, falling back to plaintext.のエラー対処方法
※商品情報・価格等は作成時点のものです。
結論から
Shikiなどのシンタックスハイライトで、コード内で指定すべき言語が適切でない場合に表示されるエラーのようです。
原因が分かればどうってことないんですが、初めShiki関連のエラーかどうかを断定しづらかったので、意外と悩みました。
今回僕が直面したのは、まさにコード内で言語指定を「Next.js」と「Astro」と記述してしまい、シンタックスハイライターが直接的に言語対応していなかったためエラーが起きたようです。
解決方法
```Next.js
// コード
```
```Astro
// コード
```
上記誤った記述を、下記に指定し直す。
```javascript
// コード
```
```javascript
// コード
```
これでエラーが表示されなくなりました…!
今回Astroはjavascriptに変更しましたが、表示したいコード内容によってはhtmlやcssとしても問題ないと思われます。
エラーが起きたきっかけ
このブログを編集している時、いつのまにか、npm run dev
したときに以下のエラーが出るように😨
// 実害はなさそうでしたが、npm run devしたときに以下が表示される
The language "Next.js" doesn't exist, falling back to plaintext.
The language "Astro" doesn't exist, falling back to plaintext.
始めは、カテゴリー一覧を記述する用に用意した src/lib/constants.js に、Next.jsとAstroのカテゴリーを登録していないのに、どこかの記事でそれらのカテゴリーに登録記述をしたのか…?と思いました。
ただ、Next.jsカテゴリーとしての記事はまだ存在していないはずなので、やはりそれは違うだろと考えました。
もっというと、falling back to plaintext.
はフォールバックでやむをえずプレーンテキストにしたってことですよね…?🤔
そこで、シンタックスハイライト…もっと言うとこのブログで使用しているShikiが怪しいと当たりを付けました。
何度かプロジェクト全体をNext.jsやAstroで検索し、それでも何故か取りこぼしていたのですが、ふとした時にある記事(.mdファイル)内のコードブロックで、確かに記述を誤って指定している箇所がありました。
実害こそとくに無いエラーでしたが、npm run dev
する度にエラー表示され、何となくモヤっとさせられるので、解決できて良かったです。
おまけ
この解決方法は、あくまでエラーが出ないようにするための、一時的な解決策かなぁと思います。
今後、Shikiが「Next.js」や「Astro」みたいな特定のフレームワーク名を直接サポートしてくれればベストでしょうかね。
あるいは、Shikiにカスタム言語を追加する方法が開発されることで、今回のように本来実現したかったコード言語指定が実現できれば、ありがたいなぁと思います。
以上、同じような状況に遭遇された方は、ご参考ください。 また、もしお役に立てていれば、気軽にシェアいただけるととても嬉しいです😄