icon

うーん、顔の筋肉がまた凝ってる

icon

Vivaldi落ちた

icon

ようやく問題が解決した、気がする。動作確認はしないとだけど。
Nuxt3のroute middlewareで、
if (process.server) returnしてクライアントサイドだけで動く様になってるのにreturn navigateTo()すると確実に"Hydration node mismatch"が発生してしまう。SSRでレンダリングしたのとまったく違うページを、CSRでレンダリングしてるのだから、それはそう。

とはいえ
if (process.server) returnを直ぐには取り除けないのでnavigateTo()の代わりにwindow.location.hrefで遷移する事にした。
これならブラウザがアクセスしなおすから、SSRからやり直しになってmismatchじゃなくなる。
当然SPAじゃなくなり状態も破棄されるけど、それは許容できるのでworkaroundとしてはヨシ。

他の手で、nuxt.config.tsの
routeRulesssr: falseにしてCSRだけになる様に設定しても回避できるけど、今回は条件に合致するならどのページからでも遷移が必要で、そうすると全ページSSR無効になっちゃうから、今回は無し。