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

Angular运行时报错:Cannot read properties of undefined (reading 'getContext')

问题产生原因
  • 报错本质是脚本尝试对不存在的DOM元素调用getContext方法:AdminLTE自带的dashboard2.js是其官方示例仪表盘页面的配套脚本,内部默认会读取页面上预设ID的canvas元素用于渲染图表,你当前的Angular页面没有插入这些对应的canvas节点,脚本执行时就会因为获取到的元素为undefined触发报错。
  • 清空node_modules下的dashboard2.js后报错转移到scripts.js,是因为你在angular.json的scripts配置中引入了该文件,Angular打包时会把所有配置的全局脚本合并打包到scripts.js中,直接修改node_modules内的源文件属于临时修改,要么重新打包后才会生效,要么重装依赖就会被还原,本身就不是合理的修改方式。
解决办法
  • 如果你不需要使用AdminLTE自带的仪表盘图表功能:直接打开angular.json,找到architect > build > options > scripts配置项,移除其中对admin-lte/dist/js/pages/dashboard2.js的引入即可,不需要修改node_modules内的文件。
  • 如果你需要使用AdminLTE的仪表盘图表功能:不要全局引入dashboard2.js,在你对应仪表盘页面的Angular组件中,在ngAfterViewInit生命周期钩子(此时页面DOM已经渲染完成)中,先确保你已经在组件模板中插入了对应ID的canvas元素,再手动执行图表初始化逻辑即可。
  • 额外建议:不要全局引入AdminLTE所有页面的示例脚本,只引入你需要的核心功能脚本admin-lte/dist/js/adminlte.min.js即可,避免其他不需要的示例脚本触发类似的DOM不存在报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:04