我正在更新以下库以支持Chart.js 4.X:
https://www.npmjs.com/package/chartjs-node-canvas
我不是这个库的原作者。目前,我得到以下错误:TypeError:this._chartJs不是构造函数
我相信库中导致这个错误的代码行是:const chart = new this._chartJs(context,configuration);
以下是_chartJs的定义方式:private readonly _chartJs:typeof ChartJS
有没有人建议如何解决这个问题?总的来说,有没有一个策略可以利用4.x迁移指南来找到这个库中所有潜在的破坏性更改?谢谢你的帮助!
到目前为止,我尝试使用这个库,但它抛出了上面的错误。我不熟悉直接使用chart.js创建图表对象,因为我一直使用上面的库。
1条答案
按热度按时间hlswsv351#
我也一直在寻找一个解决方案,最近在ChartjsNodeCanvas Github项目的一个正在进行的讨论线程下,一个贡献者发布了一个解决方案,可以在一个项目中直接使用Canvas和Chart.js,完全绕过ChartjsNodeCanvas。我花了一些实验来让它正确工作,但我现在已经将所有项目移出ChartjsNodeCanvas,并使用Chart.js 4.4.0。对于基础知识,您需要请求或导入依赖项:
字符串
接下来你需要设置各种Chart.js选项。在我的例子中,我使用了node_modules中的一个插件,我还有一个小插件用于设置画布背景颜色,我从ChartjsNodeCanvas中提取:
型
最后是图表的实际渲染。如果从Chart.js 3.x.x迁移,一些配置选项可能会改变。对于雷达图,我需要做一些小的属性更改,因为名称已经改变。此外,我发现“平均值比率:false”需要在选项下设置。当我使用ChartjsNodeCanvas时,这似乎是自动发生的(花了一段时间才弄清楚为什么我的图表看起来如此不对劲)。在我的例子中,我依赖于ChartjsNodeCanvas中的JavaScript方法来返回数据URL或缓冲区,所以我必须将画布例程 Package 在Promises中:
型
对于缓冲区,我使用以下代码:
型
如果你不需要Promises,那么你可以简单地返回canvas.toBuffer()或canvas.toDataURL()数据。另外,如果你使用的是Typescript,我花了很长时间让Chart构造函数识别ctx值。我最终放弃了,并加强了输入:
型