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

升级chart.js v4.1与react-chartjs-2 v5.1后遇register读取错误求助

问题

为适配React 18,将组件库中的chart.js升级至v4.1、react-chartjs-2升级至v5.1。安装更新包后出现错误:TypeError: Cannot read properties of undefined (reading 'register')。升级前一切正常,且组件库内的Chart组件示例可正常运行。相关代码如下:

import { Chart as BaseChart } from 'react-chartjs-2'
import { Chart as ChartJS } from 'chart.js/auto'
import { CategoryScale, LinearScale, PointElement, LineElement, BarElement } from 'chart.js'

ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, BarElement)

原因及解决方案

  • 核心原因是同时使用chart.js/auto和手动注册插件的方式导致冲突。chart.js/auto会自动注册所有内置的刻度、元素和插件,此时导出的ChartJS对象并未暴露register方法,调用ChartJS.register()自然会触发未定义错误。
  • 两种解决方案二选一:
    1. 手动控制注册组件:移除chart.js/auto的导入,改用基础chart.js导入,按需注册所需组件:
      import { Chart as BaseChart } from 'react-chartjs-2'
      import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, BarElement } from 'chart.js'
      
      ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, BarElement)
      
      也可以直接注册所有内置组件简化代码:
      import { Chart as BaseChart } from 'react-chartjs-2'
      import { Chart as ChartJS, registerables } from 'chart.js'
      
      ChartJS.register(...registerables)
      
    2. 依赖自动注册能力:删除手动注册代码,仅保留chart.js/auto的导入即可:
      import { Chart as BaseChart } from 'react-chartjs-2'
      import 'chart.js/auto'
      

内容的提问来源于stack exchange,提问作者Costi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:40:42