Ошибка: «категория» не является зарегистрированной шкалой.
Я пытаюсь перенести Chart.js из
2.9.3
к
3.3.0
и даже после применения изменений (https://www.chartjs.org/docs/latest/getting-started/v3-migration.html) я все еще получаю сообщение об ошибке:
Error: "category" is not a registered scale
.
Это то, что у меня есть
Chart.register(BarController, DoughnutController, LineController, PieController);
new Chart(this.id, {
type: 'bar',
data,
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
title: {
display: options.plugins.title ? true : false,
},
tooltip: {
mode: 'index',
intersect: false
},
scales: {
x: {
stacked: true,
gridLines: {
drawBorder: false,
display: false,
},
ticks: {
autoSkip: true,
maxTicksLimit: 13,
},
},
y: {
stacked: true,
gridLines: {
color: '#e6e6e6',
drawBorder: false,
},
}
}
});
Что я мог здесь упустить?
5 ответов
Как и в сообщении об ошибке, вы используете
category scale
поэтому вам нужно будет импортировать и зарегистрировать его так:
import {CategoryScale} from 'chart.js'; Chart.register(CategoryScale)
.
Или вы можете не использовать treehaking и импортировать все так:
import Chart from 'chart.js/auto'
.
Чтобы узнать обо всех доступных вещах, которые вам могут потребоваться для импорта и регистрации, пожалуйста, посмотрите здесь: https://www.chartjs.org/docs/3.3.0/getting-started/integration.html#bundlers-webpack-rollup-etc
Если вы используете
react-chartjs-2
.
Без сотрясения дерева:
import { Chart as ChartJS } from 'chart.js/auto'
import { Chart } from 'react-chartjs-2'
С встряхиванием дерева:
import {
Chart as ChartJS,
CategoryScale,
LinearScale,
PointElement,
LineElement,
Title,
Tooltip,
Legend,
} from 'chart.js'
import { Chart } from 'react-chartjs-2'
ChartJS.register(
CategoryScale,
LinearScale,
PointElement,
LineElement,
Title,
Tooltip,
Legend
)
Использовать с react-chartjs-2 и импортировать все; изменение диаграммы как chartjs, чтобы она не отображала ошибку при импорте диаграммы из диаграммы реагирования
import { Chart as ChartJS, registerables } from 'chart.js';
import { Chart } from 'react-chartjs-2'
ChartJS.register(...registerables);
В NextJS мне нужно использовать следующее, так как внутри реакции-chartjs-2 есть useEffect, поэтому все должно быть визуализировано клиентом:
"use client";
import "chart.js/auto";
import { Line } from "react-chartjs-2";
Я использую линейную диаграмму, я столкнулся с этой проблемой при обновлении до версии next.js, приведенное ниже решение отлично работает для меня, разрешил это до ошибки диаграммы destroy()
импортировать диаграмму из 'chart.js/auto'; импортировать {строку} из "react-chartjs-2";