今回は、私と同じくネット上の優れた記事を流し読みして躓き、時間を無駄にする人向けの記事です。
VDataTableのv2→v3の移行
私は今、個人開発でNuxt2からNuxt3にプロジェクトを移行させる作業を行っています。
で、VDataTableを使用しようと思ったら以下のようなエラーが出ました。
chunk-K4GEDSIH.js:1654 [Vue warn]: Failed to resolve component: v-data-table If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.
「v-data-tableが解決できない…!?また面倒なやつが来たか…。」
と思いましたが、そんなことはありません。
ネット上にあるVuetify3のv-data-tableの記事を漁っていればすぐ解決できます。(てか公式に書いてあります。)
Introduction to Labs — Vuetify
A collection of in-development components for testing purposes before final release
Vuetify3のv-data-tableを試してみる
VDataTableは別途importが必要
VDataTableはVuetify3を普通にimportするだけでは足りず、VDataTable用のimport宣言が必要です。
下記のvuetify.tsを見てもらえれば分かりますが、VDataTableはvuetify/componentsには存在しないみたいなんですよね。
plugins/vuetify.ts
import { createVuetify } from 'vuetify' import * as components from 'vuetify/components' import * as directives from 'vuetify/directives' import { VDataTable } from 'vuetify/labs/VDataTable' export default defineNuxtPlugin((nuxtApp) => { const vuetify = createVuetify({ // ↓↓↓ 削除 ↓↓↓ // components, // ↑↑↑ 削除ここまで ↑↑↑ // ↓↓↓ 追加 ↓↓↓ components: { components, VDataTable }, // ↑↑↑ 追加ここまで ↑↑↑ components, directives, ssr: true }) nuxtApp.vueApp.use(vuetify) })
VDataTableはVuetify2時代から存在しますが、Vuetify3がリリースされたから比較的新しいAPIです。だから別途importが必要なんですかね…?
まぁ、いいや
とりあえず解決。
vuetify/labs/VDataTableでimportするより、vuetify/labs/componentsで丸ごとimportしちゃった方が後々良さそうです。
こじらでした
じゃ