vue使用echarts报错init is undefined...或者this.dom.getContext is not a function

解决办法

  1. init undefined

到package.json中查看,如果ehcarts版本在5.0之上的
使用 import * as echarts from 'echarts'导入

或者用npm uninstall echarts先卸载echarts,安装旧版本
npm i echarts@4 --save

  1. this.dom.getContext is not a function at e.initContext

报错是由于用了jquery来寻找节点,ehcarts不接受jQueryDOM,改用原生方式document.getElementById(“myEcharts”)即可

过程

按网上的文档用 npm i echarts --save 安装了,然后在vue中使用如下代码注册插件

import  echarts from 'echarts'; 
// 并设置对应的属性
Vue.prototype.$echarts = echarts; 

但是调用echarts.init初始化报错,既然init找不到,我首先想的就是输出一下echarts这个东西,看看他的结构

console.log(this.$echarts)

结果为undefined

正确安装了,但是导入没有东西,这种情况肯定是导入姿势不正确

import导入的前提是某个文件进行了导出,比如export default{}

直接查看node_modules中的echarts目录下的index.js,发现里面全是use函数在使用各个模块,并没有导出,使用import * as echarts from 'echarts'; 将里面的东西集成到一坨

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<!doctype html> <html> <head> <meta charset="utf-8"> <title>2019新年倒计时</title> <style> @import url("https://fonts.googleapis.com/css?family=Aleo"); :root { font-family: "Aleo", sans-serif; } html, body { width: 100%; height: 100%; padding: 0; margin: 0; background: rgb(119, 13, 13); background: radial-gradient( circle, rgba(119, 13, 13, 0.92) 64%, rgba(0, 0, 0, 0.6) 100% ); } canvas { width: 100%; height: 100%; } .label { font-size: 2.2rem; background: url("img/6368077651977322227241996.png"); background-clip: text; -webkit-background-clip: text; color: transparent; animation: moveBg 30s linear infinite; } @keyframes moveBg { 0% { background-position: 0% 30%; } 100% { background-position: 1000% 500%; } } .middle { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .time { color: #d99c3b; text-transform: uppercase; display: flex; justify-content: center; } .time span { padding: 0 14px; font-size: 0.8rem; } .time span div { font-size: 3rem; } </style> </head> <body> <div class="middle"> <h1 class="label">New Year Countdown </h1> <div class="time"> <span> <div id="d"> 00 </div> Days </span> <span> <div id="h"> 00 </div> Hours </span> <span> <div id="m"> 00 </div> Minutes </span> <span> <div id="s"> 00 </div> Seconds </span> </div> </div> <script> class Snowflake { constructor() { this.x = 0; this.y = 0; this.vx = 0; this.vy = 0; this.radius = 0; this.alpha = 0; this.reset(); } reset() { this.x = this.randBetween(0, window.innerWidth); this.y = this.randBetween(0, -window.innerHeight); this.vx = this.randBetween(-3, 3); this.vy = this.randBetween(2, 5); this.radius = this.randBetween(1, 4); this.alpha = this.randBetween(0.1, 0.9); } randBetween(min, max) { return min + Math.random() * (max - min); } update() { this.x += this.vx; this.y += this.vy; if (this.y + this.radius > window.innerHeight) { this.reset(); } } } class Snow { constructor() { this.canvas = document.createElement("canvas"); this.ctx = this.canvas.getContext("2d"); document.body.appendChild(this.canvas); window.addEventListener("resize", () => this.onResize()); this.onResize(); this.updateBound = this.update.bind(this); requestAnimationFrame(this.updateBound); this.createSnowflakes(); } onResize() { this.width = window.innerWidth; this.height = window.innerHeight; this.canvas.width = this.width; this.canvas.height = this.height; } createSnowflakes() { const flakes = window.innerWidth / 4; this.snowflakes = []; for (let s = 0; s < flakes; s++) { this.snowflakes.push(new Snowflake()); } } update() { this.ctx.clearRect(0, 0, this.width, this.height); for (let flake of this.snowflakes) { flake.update(); this.ctx.save(); this.ctx.fillStyle = "#FFF"; this.ctx.beginPath(); this.ctx.arc(flake.x, flake.y, flake.radius, 0, Math.PI * 2); this.ctx.closePath(); this.ctx.globalAlpha = flake.alpha; this.ctx.fill(); this.ctx.restore(); } requestAnimationFrame(this.updateBound); } } new Snow() const comingdate = new Date("Jan 1, 2019 00:00:00"); const d = document.getElementById("d"); const h = document.getElementById("h"); const m = document.getElementById("m"); const s = document.getElementById("s"); d.innerHTML = getTrueNumber(days); h.innerHTML = getTrueNumber(hours); m.innerHTML = getTrueNumber(mins); s.innerHTML = getTrueNumber(secs); if (x <= 0) clearInterval(x); }, 1000); const getTrueNumber = x => (x < 10 ? "0" + x : x); </script> <div style="text-ali
html5 canvas填色画游戏代码是一款适合儿童玩的益智类填色游戏,通过选中色块,来给模型填充颜色。支持多种模型选择填色效果。 function extend(O1,O2){     for(var i in O2){         O1[i]=O2[i];     } } function each(arr,f){     for(var i = 0;i<arr.length;i ){         f.call(arr[i],i,arr[i]);     } } function dataInfo(Obj,x,y){     var c=document.createElement("canvas");     var txt= c.getContext("2d");     c.width=Obj.img.width;     c.height=Obj.img.height;     txt.drawImage(Obj.img,0,0);     var data=txt.getImageData(x-1,y-1,3,3);     var num=0;     for(var q=0;q<data.data.length;q =4){         num =data.data[q 3];     }     num=num/9;     return parseInt(num); } var HGAME=new Object(); HGAME.event=new Object();//事件对象 HGAME.event.clickBuffer=new Array();//缓存要添加事件的节点 click buffer HGAME.animate=function(Obj){     var defaultObj={         time:30,//动画间隔         frequency:-1,//动画次数 -1表示无限制         action:function(){},//动画每一帧的动作         lastAction:function(){}//最后一次动画执行完成触发函数     };     extend(defaultObj,Obj);     var oldTime=new Date();     var newTime=null;     this.time=defaultObj.time;     this.frequency=defaultObj.frequency;     this.action=defaultObj.action;     this.lastAction=defaultObj.lastAction;     this.stop=function(){         cancelAnimationFrame(this.INT_BUFFER);     };

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值