Vuejs - Не удалось смонтировать компонент: шаблон или функция визуализации не определены - PullRequest
0 голосов
/ 18 мая 2018

Я не уверен, что я делаю неправильно.Я получаю следующее сообщение об ошибке:

сообщение об ошибке в консоли:

[Vue warn]: Failed to mount component: template or render function not defined.

found in

---> <VueChartjs>
       <Chatjsvue> at src\components\vueChartjs\Chatjsvue.vue
         <App> at src\App.vue
           <Root>

index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'


Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      // component: HelloWorld
      component: require('../components/HelloWorld.vue').default
    }
  ]
})

App.vue

<template>
  <div id="app" class="container">
    <img src="./assets/logo.png" class="logo">

    <!-- chartjs -->
    <div class="chartjsvue">
      <Chatjsvue></Chatjsvue>
    </div>
    <div class="clear"></div>
    <!-- chartjs -->

  </div>
</template>

<script>
import Chatjsvue from '@/components/vueChartjs/Chatjsvue'

export default {
  name: 'App',
  components: {
    Chatjsvue
  }
}
</script>

Chatjsvue.vue

<template src="../../views/chartjshtml/chartsjs.html"></template>

<script>
  import Chartjsvue from '@/assets/javascripts/chartjs'

  export default {
    components: {
      'vue-chartjs': Chartjsvue 
    }
  };
</script>

chartsjs.html

<div class="wrapper">
  <vue-chartjs></vue-chartjs>
</div>

chartjs.js

file is rmpty- no code in the file

Что означает ошибка и что нужно сделать для ее устранения?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Ваш файл chartjs.js не должен быть пустым.Это должен быть компонент Vue с шаблоном, который можно отобразить.Любой javascript может быть написан внутри самих тегов script.

Объект компонентов должен содержать только список компонентов vue, которые необходимо использовать в текущем компоненте.И каждый компонент должен иметь шаблон.

0 голосов
/ 06 июня 2018

Спасибо всем, кто внес вклад в ответ.Файл js не должен быть пустым.Это полный код для отображения всех диаграмм для chartjs

main.js [src / main.js]

import Vue from 'vue'
import App from './App'
import router from './router'
import ChartJsPluginDataLabels from 'chartjs-plugin-datalabels'

Vue.config.productionTip = false

require('./assets/stylesheets/application.css')
require('./assets/javascripts/application.js')
require('./assets/javascripts/chartjs.js')


/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { 
    App,
    ChartJsPluginDataLabels
  },
  template: '<App/>'
})

App.vue [src / App.vue]

<template>
  <div id="app" class="container">
    <!-- chartjs -->
    <div class="chartjsvue tab-content active" id="tab2">
      <Chatjsvue></Chatjsvue>
    </div>
    <div class="clear"></div>
    <!-- chartjs -->
  </div>
</template>

<script>
import Chatjsvue from '@/components/vueChartjs/Chatjsvue'
export default {
  name: 'App',
  components: {
    Chatjsvue
  }
}
</script>

Chatjsvue.vue [src / components / Chatjsvue.vue]

<template src="../../views/chartjshtml/chartsjs.html"></template>

<script>
  import Chartjsbarvue from '@/assets/javascripts/chartjsbar'
  export default {
    components: {
      'vue-chartbarjs': Chartjsbarvue   
    },
    mounted(){
      console.log('Data is chartjs',this)
    },
    methods: {},
  }
</script>

chartsjs.html [src / views / chartjshtml / chartsjs.html]

<div class="wrapper">
  <div class="chart_header">chartjs bar chart</div>
  <vue-chartbarjs></vue-chartbarjs>
</div>

chartjsbar.js [src / assets / javascripts / chartjsbar.js]

/*===================================================
    File: Chartsjsvue.vue
  ===================================================*/
import { Bar } from 'vue-chartjs'

export default {
  extends: Bar,
  data () {
    return {
      datacollection: {
        labels: ['VueJs', 'EmberJs', 'ReactJs', 'AngularJs'],
        datasets: [
          {
            label: '1st Dataset hello',
            backgroundColor: 'rgba(52,65,84, 0.3)',
            bordercolor: '#344154"',
            hoverBackgroundColor: "#344154",
            data: [40, 20, 12, 39]
          },
          {
            label: '2nd Dataset',
            backgroundColor: 'rgba(130,191,163, 0.5)',
            bordercolor: '#82BFA3"',
            hoverBackgroundColor: "#82BFA3",
            data: [50, 70, 22, 55]
          }
        ]
      },
      options: {
        responsive: true,
        maintainAspectRatio: false,
        plugins: {
          datalabels: {
            display: false
          }
        }
      }
    }
  },
  mounted () {
    this.renderChart(this.datacollection, this.options)
  }
}

enter image description here

0 голосов
/ 18 мая 2018

Я думаю, проблема в том, что ваш chartjs.js пуст.Вам нужно сделать:

import template from './chartjs.html' // in your questions it's chartsjs.html, please help to correct it
export default {
  template: template
}
...