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

React测试报错TypeError: _chart.registerables不可迭代求解决方案

解决Jest测试中Chart.js的TypeError: _chart.registerables is not iterable错误

问题分析

报错触发在PieChart.jsx的ChartJS.register(...registerables)代码行,说明测试环境里registerables为undefined,无法被展开迭代。本质是Jest测试时未正确加载Chart.js模块,或是组件中Chart.js的导入/使用逻辑在测试环境下存在兼容性问题。

解决方案

方案1:用Jest Mock跳过Chart.js注册逻辑

你的测试目标是登录页面,不需要渲染PieChart的真实逻辑,直接Mock Chart.js模块即可:
在测试文件App.test.js顶部添加以下代码:

// Mock Chart.js 模块,避免执行真实注册逻辑
jest.mock('chart.js', () => ({
  Chart: jest.fn(),
  register: jest.fn(),
  registerables: []
}));

// 若组件从 'chart.js/auto' 导入,调整mock路径:
// jest.mock('chart.js/auto', () => ({
//   default: jest.fn(),
//   register: jest.fn(),
//   registerables: []
// }));

方案2:检查PieChart组件的导入正确性

确保PieChart.jsx中正确导入registerables:

// 正确导入方式
import { Chart, registerables } from 'chart.js';

Chart.register(...registerables);

避免错误导入(比如仅导入Chart后试图访问Chart.registerables,这种写法在测试环境中易导致undefined)。

方案3:调整Jest配置适配Chart.js模块

如果是模块格式兼容问题,修改jest.config.js(无则新建),指定使用Chart.js的CommonJS版本:

module.exports = {
  transform: {
    '^.+\\.(js|jsx)$': 'babel-jest',
  },
  moduleNameMapper: {
    // 强制Jest使用Chart.js的CommonJS分发版本
    'chart.js': '<rootDir>/node_modules/chart.js/dist/chart.cjs.js'
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:15:59