Vue echarts初始化实例Error in mounted hook: “TypeError: Cannot read property ‘init‘ of undefined“

博客主要讲述了在Vue项目中使用Echarts时遇到的初始化错误,即`TypeError: Cannot read property 'init' of undefined`。问题在于Echarts的版本不兼容或者引用方式不正确。作者提供了两种解决方案:一是降级Echarts版本,二是改变Echarts的引用方式。通过这两种方法,作者成功解决了问题并展示了最终正常运行的Echarts图表。
摘要由CSDN通过智能技术生成

项目场景:

Vue echarts初始化实例:Error in mounted hook: “TypeError: Cannot read property ‘init’ of undefined”


问题描述:

1.安装echarts依赖

  通过 npm 获取 echarts,npm install echarts --save

2.main.js中全局引用

 import echarts from 'echarts'
  // 全局方法挂载
 Vue.prototype.$echarts = echarts

3.基于已经创建好的dom,初始化echarts实例

 // 初始化echarts实例
 this.chartLine = this.$echarts.init(
     document.getElementById('echartsView1')
 );

4.运行中报错,Echarts图表渲染失败


 原因分析:

开始的时候考虑会不会是版本的问题,后来发现,可能真是,自己安装的是最新版本和之初项目中的echarts版本不相同,就临时改了一下,最后成功了。

项目模块结束后,有点小强迫症还惦记这这个问题,就又上网搜罗了一番,发现出来改变版本可以解决,另外一种方式也可以,就是引用方式稍微修改一下也可以,就很nice
 


解决方案:

  • 通过改变版本解决:

删除之前的版本,降低一下版本即可: npm install echarts@4.9.0 --save

 

  • 通过改变引用方式解决:

稍微在main.js中对echarts的引用方式稍作改变就行

import *as echarts from 'echarts'
// 全局方法挂载
Vue.prototype.$echarts = echarts

(扩展:ES6新增import *as xxx from ‘xxx’

        import * as xxx from ‘xxx’: 会将若干export导出的内容组合成一个对象返回,通俗点说就是将导出的多个对象放到一个总对象中,调用的时候,直接用那个总对象调用,调用方便;

        import xxx from ‘xxx’:(export default Din)只会导出这个默认的对象作为一个对象,也就是只导出一个对象;


来给您们康康最终的效果:

嗯,以上两个方法反正我测试都可以解决上面那个bug,要是有遇到类似的,希望可以帮到您……欢迎交流

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在组件中使用axios时,如果直接使用Vue.use(axios)进行引用,会出现错误"Error in mounted hook: TypeError: Cannot read property 'XXX' of undefined"。因为axios不能像其他组件一样直接通过Vue.use()进行引用。 为了使axios能够被其他组件使用,你需要将axios改写为Vue的原型属性,并将其绑定到Vue.prototype上。你可以使用以下代码将axios绑定到Vue的原型上: ```javascript Vue.prototype.axios = axios ``` 然后,在你的组件中使用this.axios进行引用,例如: ```javascript this.axios.get('/user') .then(res => { this.result = res.data; }); ``` 另外,你也可以自定义变量的名字,将axios绑定到Vue的原型上,例如: ```javascript Vue.prototype.$ajax = axios ``` 然后,在使用axios时,可以使用this.$ajax进行调用: ```javascript this.$ajax.get('/user') .then(res => { this.result = res.data; }); ``` 如果你还没有安装axios,你需要通过npm install axios --save命令来安装axios,并在main.js中引用axios: ```javascript import axios from 'axios' ``` 总结来说,当出现"Error in mounted hook: TypeError: Cannot read property 'get' of undefined"错误时,是因为你没有正确引入和使用axios。你需要将axios改写为Vue的原型属性,并正确引用它。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue中使用axios (Error in mounted hook: “TypeError: Cannot read property ‘XXX‘ of undefined“ ...](https://blog.csdn.net/qq_40738077/article/details/98326806)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值