ローカルで開発を進めてサーバにデプロイしたら、リンクにホバーした際にコンソールにGETエラーが出る事に気づいた。
https://ドメイン/リンク先のページ名.json?slug=リンク先のページ名
ネットで情報を漁ってみたらどうやらprefetchがhover時にあらかじめ情報を読み取ろうとしてできないからエラーとなっているようだった。
headllessCMSですべての情報はWordPressからGraphQLで持ってきてるので、そのあたりでprefetchが生成したURLでは情報が取得できてないのかと推測し、prefetchを無効にしたらエラーが吐き出されなくなるのでは、と考えてやってみたが、改善されなかった。
<Link href="/"
className="hover:underline"
prefetch={false} ←これ
>
リンク文言
</Link>
根本的な解決としてはprefetchで正しく情報を取得できるようにするべきか、と考え、個別ページのURLが日本語まじり(書名をキーにしていたので)にしてたのを内部的なIDの半角英数にしたところ、エラーが吐き出されなくなった。
ローカルだと動いたので勢いでそのままにしてたけど2バイト文字はやっぱりまずいらしい。
prefetch自体がローカルとサーバーで挙動は微妙に違うらしく、いずれにしろサーバーに上げるまで気づかなかった。
Next.jsって「ローカルだと動くけど、サーバーだと〇〇が駄目」とか「vercelだと〇〇」ってのが多くてちょっと疲れた。