【问题标题】:highcharts canvas-tools: Cannot read property 'prototype' of undefinedhighcharts canvas-tools:无法读取未定义的属性“原型”
【发布时间】:2026-02-22 06:25:01
【问题描述】:

我有一个 ruby​​-on-rails 应用程序,我正在尝试使用 highcharts/modules/canvas-tools.js。我继承了这个应用程序,并且其中不存在 highcharts 文件。我对 javascript 了解不多,所以我什至不确定应用程序如何使用这些资产。应该显示图表的页面没有。尝试查看图表时,我的 Chrome 控制台中出现以下错误:

Uncaught TypeError: Cannot read property 'prototype' of undefined 

控制台指的是这些行:

// Extend CanVG renderer on demand, inherit from SVGRenderer
extend(CanVGRenderer.prototype, SVGRenderer.prototype);

在 highcharts 文件的末尾:

}(Highcharts));

这是我的 application.js:

//= require jquery
//= require jquery-ui-1.10.2.custom
//= require twitter/bootstrap
//= require highcharts
//= require highcharts/modules/canvas-tools
//= require highcharts/modules/exporting
//= require bootstrap-typeahead
//= require rails
//= require autocomplete-rails
//= require_tree .

$(document).ready(function()     {
    $('.dropdown-toggle').dropdown();
} );

$(document).ready(function() {
    $('.popover-myasset').popover();
});

在其他情况下,我收到一个错误,指出 highcharts 已多次加载,但我没有使用 Highstock,这显然是此错误的根源。错误信息链接:http://highcharts.com/errors/16

感谢您提供的任何建议。

【问题讨论】:

  • Highstock 包含 Highcharts,因此您不必包含两次。
  • 您能否提供此应用开发版本的链接?
  • 想知道您是否曾经解决过这个问题,Joe?
  • 我也遇到了这个问题。还是没有解决办法?

标签: javascript ruby-on-rails highcharts


【解决方案1】:

我也遇到过这个错误-

未捕获的类型错误:无法读取未定义的属性“原型”

为了修复它,我将它添加到第 2931 行-

CanVGRenderer = (typeof(Highcharts.CanVGRenderer) != "undefined"
    ? Highcharts.CanVGRenderer : {},

由于扩展函数(highcharts.src.js 的第 128 行)在传递变量时基本上做同样的事情。

canvas-tools.src.js 中的第 2897 行 -

if (CanvasRenderingContext2D) 

在 IE 中也会引发错误。本节来自于 2013 年 5 月 7 日更新的 canvg.js,但未由 highcharts 更新,现在应该是 -

if (typeof(CanvasRenderingContext2D) != 'undefined')

【讨论】:

    【解决方案2】:

    每个开发团队:

    canvas-tools 不应该包含在脚本文件中。相反,Highcharts 会按需延迟加载。见http://api.highcharts.com/highcharts#global.canvasToolsURL

    https://github.com/highslide-software/highcharts.com/issues/2311

    【讨论】:

      【解决方案3】:

      有几个问题。我所做的可能并不适用于所有情况。

      我将 highcharts 要求语句放在以我使用它的视图命名的文件夹和文件中:

      app/assets/
      -javascripts
      --foos
      ---foos.js
      --application.js
      

      foos.js 包含:

      //= require highcharts
      //= require highcharts/modules/canvas-tools
      //= require highcharts/modules/exporting
      

      【讨论】:

        最近更新 更多