首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确安装Rails的Vuetify?

如何正确安装Rails的Vuetify?
EN

Stack Overflow用户
提问于 2018-12-02 17:45:15
回答 1查看 3.6K关注 0票数 7

Javascript错误:

代码语言:javascript
复制
[Vuetify] Multiple instances of Vue detected
See https://github.com/vuetifyjs/vuetify/issues/4068

If you're seeing "$attrs is readonly", it's caused by this
consoleError @ vuetify.js:22001
install @ vuetify.js:16239
Vue.use @ vue.esm.js:4751
install @ vuetify.js:17943
Vue.use @ vue.esm.js:4751
(anonymous) @ application.js:22
__webpack_require__ @ bootstrap 0e105d68ff80c96169ef:19
(anonymous) @ bootstrap 0e105d68ff80c96169ef:62
(anonymous) @ bootstrap 0e105d68ff80c96169ef:62

Tried:

  • 从'vue‘导入,而不是从这个github问题中建议的'vue/dist/vue.esm’导入。这会导致另一个问题(仅运行时构建vue,而不进行模板解析)

详细信息:

我有一个Rails应用程序,我想在其中创建一个导航抽屉使用Vuetify的<v-navigation-drawer>。根据Vuetify快速启动指南,我使用$ npm install vuetify --save安装。然后,为了进行功能检查,我在我的单个文件组件中使用了它们自己的示例:

模板

代码语言:javascript
复制
<!-- app/javascript/navigation-drawer.vue -->
<template>
    <div id="nav-drawer">
        <v-navigation-drawer permanent>
            <v-toolbar flat>
                <v-list>
                    <v-list-tile>
                        <v-list-tile-title class="title">
                           Application
                        </v-list-tile-title>
                    </v-list-tile>
                </v-list>
            </v-toolbar>

            <v-divider></v-divider>

            <v-list dense class="pt-0">
                <v-list-tile
                    v-for="item in items"
                    :key="item.title"
                    @click=""
                >
                   <v-list-tile-action>
                       <v-icon>{{ item.icon }}</v-icon>
                   </v-list-tile-action>

                   <v-list-tile-content>
                       <v-list-tile-title>{{ item.title }}</v-list-tile-title>
                    </v-list-tile-content>
                </v-list-tile>
            </v-list>
        </v-navigation-drawer>
    </div>
</template>

<script>
   export default {
       data () {
           return {
               items: [
                { title: 'Home', icon: 'dashboard' },
                { title: 'About', icon: 'question_answer' }
            ],
            right: null
        }
    }
}

Main application.js

代码语言:javascript
复制
import TurbolinksAdapter from 'vue-turbolinks'
import Vue from 'vue/dist/vue.esm'
import BootstrapVue from 'bootstrap-vue'
import Vuetify from 'vuetify'
import NavigationDrawer from '../navigation-drawer.vue'

import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.use(TurbolinksAdapter)
Vue.use(BootstrapVue)
Vue.use(Vuetify)

Vue.component('navigation-drawer', NavigationDrawer)

document.addEventListener('turbolinks:load', () => {
  const app = new Vue({
    el: '[data-behavior="vue"]'
  })
})

NPM认证版

代码语言:javascript
复制
$ npm list vuetify
barber-ranks@ /path/to/app/barber-ranks
└── vuetify@1.3.11 

NPM版本

代码语言:javascript
复制
$ npm list vue
barber-ranks@ /path/to/app/barber-ranks
├── vue@2.5.17 
└─┬ vue-turbolinks@2.0.3
  └── vue@2.5.17 

注意到这个rails项目同时使用npmyarn来管理节点包。我不确定这是否会造成冲突。

EN

回答 1

Stack Overflow用户

发布于 2018-12-02 19:24:31

本期中发现,您可以解析Vue路径并使Vuetify实例与Vue一起工作。

在您的config > webpack > environment.js中添加:

代码语言:javascript
复制
const { environment } = require('@rails/webpacker')
const vue =  require('./loaders/vue')

environment.loaders.append('vue', vue)

const resolver = {
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    }
  }
}
environment.config.merge(resolver)

module.exports = environment

在javascript > application.js中,您现在可以像这样导入Vue和Vuetify,而不会出错:

代码语言:javascript
复制
import Vue from 'vue'
import Vuetify from 'vuetify'
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53582944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档