Vuetify
webpackアプリケーションにVue
をセットアップしました。
私のプロジェクトはvue init webpack my-project
を実行してVue 2.5.2
を実行し、Vuetify 2.0.2
を使用してセットアップされています。
App.js
にVuetify
をインストールしました
import Vue from 'vue'
import '../node_modules/vuetify/dist/vuetify.min.css';
import App from './App'
import router from './router'
import store from './store'
import Vuetify from 'vuetify'
Vue.use(Vuetify)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
すべてが正常に動作しているようです。コンポーネントの1つでVuetify
componentsを呼び出すことができます。
<template>
<v-container>
<v-card width="400" height="150" raised>
<h4>Hello</h4>
</v-card>
</v-container>
</template>
次に、App.js
をv-appコンポーネントでラップする必要があることを読みましたが、その場合、Error: Vuetify is not properly initialized
というエラーが表示されます。
<template>
<div id="app">
<v-app>
<NavigationBar />
<v-content>
<router-view />
</v-content>
</v-app>
</div>
</template>
Vuetify
が正しくインストールされていない可能性があります。私の問題に少しでもご理解いただければ幸いです。
私はこのようにしています(vue 3.9、vuetify 2.0)。
Main.js(またはApp.js)
import vuetify from './plugins/vuetify'
...
new Vue({
...
vuetify,
render: h => h(App)
}).$mount('#app')
Plugins/vuetify.js内
import Vue from "vue"
import Vuetify from "vuetify/lib"
Vue.use(Vuetify)
export default new Vuetify({
icons: {
iconfont: 'md', // 'mdi' || 'mdiSvg' || 'md' || 'fa' || 'fa4'
},
theme: {
dark: false,
},
themes: {
light: {
primary: "#4682b4",
secondary: "#b0bec5",
accent: "#8c9eff",
error: "#b71c1c",
},
},
})
app.vue
<template>
<v-app>
...
</v-app>
</template>
Vue-cliを使用している場合は、メタタグの後にファイルindex.htmlに次の行を追加します。
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
そして、main.jsは次のようになります。
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import Vuetify from 'vuetify'
Vue.config.productionTip = false
Vue.use(Vuetify)
export default new Vuetify({ })
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
vuetify: new Vuetify(),
components: { App },
template: '<App/>'
})
新しいバージョンでは多くの変更があります。
これを試して
import Vue from 'vue';
import Vuetify from 'vuetify';
Vue.use(Vuetify);
new Vue({
vuetify : new Vuetify(),
...
});
幸運を
追加してみてください:
const opts = {
theme: {
dark: true,
themes: {
light: {
primary: '...',
...
},
dark: {
primary: '...',
...
}
}
}
}
そして
new Vue({
el: '#app',
router,
store,
vuetify: new Vuetify(opts),
render: h => h(App)
})
あなたのmain.js
。
パトリスは私の好みの細かく調整された答えの1つを持っています。これは構成によって異なりますが、これが必要なものかもしれません。
webpack | vue 2.5+ | vuetify 2.1+
Main.js/App.js
import Vue from 'vue'
import router from './router'
import vuetify from './plugins/vuetify' // path to vuetify export
//Vue.component('example-component', require('./components/ExampleComponent.vue').default);
const app = new Vue({
el: '#app',
router,
vuetify,
});
Plugins/vuetify.js内
// resources/js/plugins/vuetify.js
import 'material-design-icons-iconfont/dist/material-design-icons.css' // Ensure you are using css-loader
import Vue from 'vue'
import Vuetify from 'vuetify/lib'
Vue.use(Vuetify)
const opts = {}
export default new Vuetify({
icons: {
iconfont: 'md', // default - only for display purposes
},
})
あなたのEaxmpleComponent.vue
およびその他すべてのvueファイル:すべてをラップvue v-appおよびテンプレートタグ内のコンポーネント:
<template>
<v-app>
...
</v-app>
</template>
Gridsomeにvuetify(2.x)を追加すると、同じ問題が発生し、main.jsのappOptionsにvuetifyインポートオブジェクトを追加する必要がありました。
appOptions.vuetify = new Vuetify({})
で説明されているように:
https://github.com/gridsome/gridsome.org/blob/master/docs/assets-css.md
そして
https://github.com/gridsome/gridsome/issues/603#issuecomment-567056678