You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue集成Echarts-GL实现3D地图时mounted钩子报context未定义如何解决

报错根因分析

  • 核心报错ReferenceError: context is not defined的直接原因是context变量未声明就直接赋值,在Vue默认开启的严格模式下会直接抛出引用错误。
  • 后续代码中使用的$.when、$.getScript依赖jQuery,你当前项目未引入jQuery,修复完context问题后还会触发jQuery未定义报错,需要同步处理。

修复步骤

1. 解决context未定义问题

修改你代码中context赋值的行,添加变量声明关键字:

// 原代码:context = canvas.getContext("2d");
// 改为:
let context = canvas.getContext("2d");

2. 解决jQuery未定义问题

二选一即可:

  • 方案1:项目引入jQuery
    执行安装命令:
npm install jquery

在当前Vue文件的script开头引入依赖:

import $ from 'jquery'
  • 方案2:替换jQuery的脚本加载逻辑,用原生JS实现动态脚本加载,无需额外引入依赖。

可选优化建议

  • 用Vue的ref属性获取DOM节点,避免id重复冲突:
    模板部分修改为:
<div ref="earthChart" :style="{ height: '770px' }></div>

JS获取实例部分修改为:

const chartDom = this.$refs.earthChart
  • 页面销毁时释放ECharts实例避免内存泄漏:
// 在drawEarth方法中将echarts实例挂载到当前Vue实例:
this.myChart = echarts.init(chartDom)

// 新增生命周期钩子销毁实例
beforeUnmount() {
  this.myChart?.dispose()
}

内容的提问来源于stack exchange,提问作者Clo91eaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:10