Chartjs error : time scale: "time.format" is deprecated. Please use "time.parser" instead

Chartjs error : time scale: "time.format" is deprecated. Please use "time.parser" instead

我正在为我的项目使用 Chartjs。我使用的不同版本是:ChartJS 2.9.3、Chartjs-plugin-streaming 1.8.0、moment.js 2.24.0、chartjs-adapter-moment 0.1.1。 我绘制了一个实时图表,我每秒都会收到此警告,这会非常快地填充内存。

time scale: "time.format" is deprecated. Please use "time.parser" instead

我的代码是:

    private chartPlotting() {
    this.Linecap.push(new Chart('canvas', {
        type: 'line',
        data: {
            datasets: [{
                label: 'Flow',
                lineTension: 0,
                data: [],
                borderColor: '#3cb371',
                fill: false
            },
            {
                label: 'Height',
                lineTension: 0,
                data: [],
                borderColor: '#FF0000',
                fill: false
            }
            ]
        },
        options: {
            responsive: true,
            scales: {
                xAxes: [{
                    type: 'realtime',
                    time: {
                        parser: 'false'
                    },
                    display: true
                }],
                yAxes: [{
                    display: true,
                    ticks: {
                        beginAtZero: true,
                        maxTicksLimit: 10,
                        stepSize: 5,
                        max: 500
                    }
                }],
            },
            plugins: {
                streaming: {
                    duration: 300000,
                    refresh: 1000,
                    delay: 2000,
                    pause: false,
                    ttl: undefined,
                    frameRate: 48,

                    onRefresh: function (Linecap) {
                        ///var data = []
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', url);
                        xhr.onload = function () {
                            var data = JSON.parse(xhr.responseText);
                            Linecap.data.datasets[0].data.push({
                                x: Date.now(),
                                y: data[0]["yrData"]
                            });
                            Linecap.data.datasets[1].data.push({
                                x: Date.now(),
                                y: data[0]["Height"]
                            });
                        };
                    }
                }
            }
        }
    }));
}

我试图找出原因,后来知道可能会在下一个版本的 chartJS 中,即 3.0.0 这个问题将被删除。在 2.9.3 中是否有解决此错误的方法?

问题是由于您使用的不同库的版本不兼容造成的。

例如 chartjs-plugin-streaming 的文档说明如下:

Version 1.8 requires Chart.js 2.7.x or 2.8.x.

要解决这个问题,您有两个选择。

  1. 摆脱 chartjs-plugin-streaming
  2. 降级 Chart.js 2.9.3 到 2.8.0

更新

和Angular8,我推荐使用ng2-charts,它是基于Chart.js。此外,您应该摆脱 chartjs-plugin-streaming 并自己实现相关功能。

请看下面StackBlitz

6 个月后,它仍然是他们回购的公开拉取请求。您可以看到讨论和长期悬而未决的修复 here.

如果您不想降级或更改库,您可以自己在本地使用修复程序,或者使用厌倦了等待的贡献者上传的 npm 包之一。我正在使用 @taeuk-gang/chartjs-plugin-streaming.

这个问题是 fixed in chartjs-plugin-streaming 1.9.0. Also, Chart.js 3.x is supported in the latest version 2.0.0-beta.3