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

SolidJS+Vite下ChartJS xAxes刻度配置无效报错解决方案

报错核心原因

你通过chart.js/auto引入的是Chart.js 3.x及以上的新版本,但代码里的轴配置、插件配置全部是Chart.js 2.x的旧语法,新版本完全不识别xAxes、yAxes这类数组形式的旧配置键,因此抛出Invalid scale configuration for scale: xAxes错误,所有自定义轴参数自然不会生效。

除此之外你的代码还存在3个连带问题:

  • 旧版的legend、tooltips、scaleLabel配置在新版本中位置/命名已变更,直接写在options顶级不会生效
  • 使用type: 'time'时间轴时,需要单独引入时间解析适配器,缺少依赖会导致时间轴渲染失败
  • SolidJS生命周期下未做chart实例判空,数据更新effect可能在chart初始化前触发,引发空引用报错
具体修复方法
  • 替换旧版scales配置
    3.x版本不再使用xAxes: []/yAxes: []的数组结构,直接用x/y作为轴配置的键,轴标题配置从旧版的scaleLabel改到title字段下,示例配置:
scales: {
  x: {
    type: "time",
    ticks: {
      autoSkip: true,
      maxTicksLimit: 20,
    },
    display: true,
    title: {
      display: true,
      text: "Point"
    }
  },
  y: {
    display: true,
    title: {
      display: true,
      text: "Value"
    }
  }
}
  • 迁移旧版插件配置
    旧版顶级的legend、tooltips配置,3.x版本全部挪到options.plugins字段下,注意tooltips在新版本中改名为tooltip,示例:
options: {
  responsive: true,
  plugins: {
    legend: {
      display: false
    },
    tooltip: {
      mode: "index",
      intersect: false,
    }
  },
  hover: {
    mode: "nearest",
    intersect: true
  },
  // 修正后的scales配置放在此处
}
  • 补全时间轴依赖
    执行安装命令添加时间适配器:
    npm install chartjs-adapter-date-fns
    
    然后在文件顶部添加引入:
    import 'chartjs-adapter-date-fns';
    
  • 补全chart实例判空
    你写的更新图表的createEffect里,先判断chart是否已初始化再执行更新,避免空引用:
createEffect(() => {
  if (!chart) return;
  chart.data = {
    datasets: [{ 
      data: sensorData(),
      label: "Temperature",
      borderColor: "#3e95cd",
      fill: false
    }]
  }
  chart.update();
})
补充说明

如果你的x轴数据不需要时间解析,可以直接删掉x轴配置里的type: "time",就不需要额外引入时间适配器,普通类别轴可以直接渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:16:00