🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Q&A

解決済

1回答

1746閲覧

[Vue]HTMLに問題はないはずなのにエラーが出てしまいます[Nuxt.js]

jime1234567

総合スコア3

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

0グッド

1クリップ

投稿2020/12/02 07:49

編集2020/12/03 08:11

前提・実現したいこと

Nuxt.js初学者です。
技術書を見ながらブログアプリのようなものを作っているのですが

The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render.

というエラーが出てしまい解消できないという状況に陥っています。

該当のソースコード

**TheHeader.Vue** <template> <client-only> <el-menu mode="horizontal" :router="true"> <el-menu-item index="1" style="pointer-events:none;"> Nuxt Diary App </el-menu-item> <el-menu-item index="2" :route="{ path: '/posts/' }"> 投稿一覧 </el-menu-item> <el-menu-item index="4" style="float: right;" :route="{ path: `/users/${user.id}` }" v-if="user"> <span>{{user.id}}</span> </el-menu-item> <el-menu-item index="4" style="float: right;" :route="{ path: '/' }" v-else> <span>ログイン</span> </el-menu-item> <el-menu-item index="5" style="float: right" :route="{ path: '/posts/new' }"> 新規投稿 </el-menu-item> </el-menu> </client-only> </template> <script> import { mapGetters } from 'vuex' export default { computed: { ...mapGetters(['user']) } } </script>

試したこと

上記エラー文にもある通りpタグやtbodyタグなどのタグの付け忘れ(過不足)で起こるエラーのようなので自分の書いたコードを見返し、サンプルコードと比較してみたりもしたのですが問題は見当たりませんでした。

このエラーの解消法をご存じの方がいらっしゃいましたらアドバイスお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

plasticgrammer

2020/12/02 08:57

no-ssr の範囲を広げるとどうなるのでしょうか?(el-menu全体とか)
jime1234567

2020/12/03 08:10 編集

ご質問いただきありがとうございます。 no-ssrの範囲を広げてみましたがエラーは解消されませんでした。
guest

回答1

0

ベストアンサー

回答

<no-ssr></no-ssr><client-only></client-only>に変えてみてください。

補足

Nuxtのバージョンがv2.9.0以上の場合は<client-only></client-only>を使用し、未満の場合は<no-ssr></no-ssr>を使用します。
こちらを参照するといいと思います。

バージョンによって使えるものと使えないものがあるので、技術書で使われているNuxtのバージョンと合わせて学習なされた方が良いかと思います。

投稿2020/12/02 15:12

編集2020/12/04 03:47
Ryota_Fukumoto

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jime1234567

2020/12/03 08:07

ご回答いただきありがとうございます。 Nuxtのバージョンを確認したところ2.14.7でしたのでアドバイスいただいた通りclient-onlyに変えてみたのですがエラーは解消されませんでした。
Ryota_Fukumoto

2020/12/03 10:12

以下を試してみて欲しいです。 1. client-onlyを付けないとどうなりますか? 2. v-ifをv-showに変えるとどうなりますか?
jime1234567

2020/12/04 03:36

1を試した結果 [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render. のエラーがもうひとつ出るようになりました。 2を試した結果 Errors compiling template: v-else used on element <el-menu-item> without corresponding v-if. というエラーが出ました。
Ryota_Fukumoto

2020/12/04 03:57 編集

v-showにはv-elseが使えません。 v-ifをv-show="user"にした場合は、v-elseをv-show="!user"にしてください。
jime1234567

2020/12/04 04:59

v-ifをv-show="user"にし、v-elseをv-show="!user"にした結果、1と同じように [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render. のエラーがもうひとつ出るようになりました。
Ryota_Fukumoto

2020/12/04 05:14

すみません。原因がわかりません。もしかしたら他のところが原因かもしれませんね。 Teratailのルール的に良いかわからないのですが、GitHubなどで全体のソースコードを共有していただければ、見ます。
Ryota_Fukumoto

2020/12/04 05:46

cloneして動かしてみましたが、私の環境ではエラーが発生しませんでした。 とりあえず、再度npm installを実行してみたり、gitから新しくcloneしてみてください。
jime1234567

2020/12/04 06:33

gitから新しくクローンしたところ解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問