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

如何解决Uncaught TypeError:Drupal.Charts未定义的报错问题?

解决「Uncaught TypeError: can't access property "Contents", Drupal.Charts is undefined」错误

这个错误的核心原因是页面中存在代码试图访问Drupal.Charts.Contents,但Drupal.Charts对象尚未完成初始化或未被正确加载。你的自定义图表点击行为代码虽未直接引用该对象,但页面内其他图表相关逻辑(比如Drupal Charts模块的核心JS)依赖它。以下是具体解决步骤:

1. 确认Drupal Charts模块的JS资源已加载

  • 检查站点是否启用了Charts模块,通过浏览器开发者工具的Network标签,搜索是否有charts.js或相关模块JS文件成功加载。
  • 若你是通过自定义主题/模块开发,需在.info.yml中声明对Charts模块的依赖,或通过#attached方式在代码中显式引入必要的JS资源:
    # 示例:自定义模块的.info.yml声明依赖
    dependencies:
      - charts:charts
    

2. 调整自定义代码的执行条件

你的当前代码仅检查Highcharts是否存在,需补充对Drupal.Charts的存在性校验,确保代码在依赖对象就绪后再执行:

(function ($, Drupal) {
    Drupal.behaviors.chartClickBehavior = {
       attach: function (context, settings) {
        // 同时校验Highcharts和Drupal.Charts的存在性
        if (typeof Highcharts !== 'undefined' && typeof Drupal.Charts !== 'undefined') {
         Highcharts.charts.forEach(function (chart) {
            if (chart && chart.series && chart.series[0] && !chart.clickHandlersAttached) {
                chart.series[0].points.forEach(function (point) {
                    // 这里补充你的point.update逻辑
                });
                // 标记已绑定处理函数,避免重复执行
                chart.clickHandlersAttached = true;
            }
         });
        }
       }
    };
})(jQuery, Drupal);

3. 排查代码中对Drupal.Charts的误引用

全站搜索代码库,定位到调用Drupal.Charts.Contents的位置,确认该代码是否添加了足够的前置校验,比如:

// 错误示例:未校验直接访问
Drupal.Charts.Contents.doSomething();

// 正确示例:添加存在性校验
if (typeof Drupal.Charts !== 'undefined' && Drupal.Charts.Contents) {
    Drupal.Charts.Contents.doSomething();
}

4. 检查版本兼容性

确认你的Drupal核心版本、Charts模块版本、Highcharts版本三者之间是否兼容。部分旧版本的Charts模块可能存在JS初始化逻辑缺陷,导致Drupal.Charts未被正确注册到全局对象中。

内容的提问来源于stack exchange,提问作者B.lakshman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:45:12