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

@influxdata/giraffe的tableGraph渲染报错:无法读取undefined的'data'属性

报错原因与解决方案

核心报错原因

你遇到的TypeError: Cannot read properties of undefined (reading 'data')报错主要来自两个配置错误,外加一个常见的异步渲染问题:

  1. fieldOptions配置格式错误:giraffe的table组件要求fieldOptions为数组格式,用来配置所有需要展示的字段属性,你当前写的是单个对象,组件解析字段时会拿到undefined,读取子属性data时就抛出报错。
  2. tableLayer层级属性位置错误:timeZone、tableTheme是table图层的properties子属性,不是图层根节点的属性,配置位置错误也会导致组件读取配置时出现空值。
  3. 异步数据未就绪:如果fluxResponse.table是接口请求返回的异步数据,在请求未完成时该值为undefined,直接传入config也会触发该报错。

修复后的配置参考

1. 修正tableLayer配置

const tableLayer = {
  type: "table",
  properties: {
    colors: DEFAULT_TABLE_COLORS,
    timeZone: "America/Phoenix", // 移到properties内部
    tableTheme: "light", // 移到properties内部
    tableOptions: {
      fixFirstColumn: false,
      verticalTimeAxis: false,
      sortBy: {
        internalName: "_time",
        displayName: "_time",
        visible: true,
      },
    },
    // 改为数组,可添加所有需要展示的字段
    fieldOptions: [
      {
        internalName: "_time",
        displayName: "_time",
        visible: true,
      },
      // 可以继续添加其他字段,比如_value、_measurement等
      {
        internalName: "_value",
        displayName: "数值",
        visible: true,
      }
    ],
    timeFormat: "YYYY-MM-DD HH:mm:ss ZZ",
    decimalPlaces: {
      isEnforced: true,
      digits: 3,
    },
  },
};

2. 加异步加载判断,避免数据未就绪时渲染组件

<HoverTimeProvider>
  <div
    style={{
      width: "calc(70vw - 20px)",
      height: "calc(70vh - 20px)",
      margin: "40px",
    }}
  >
    {/* 加空值判断,数据就绪后再渲染Plot组件 */}
    {fluxResponse?.table ? <Plot config={{
      table: fluxResponse.table,
      layers: [tableLayer],
    }} /> : <div>数据加载中</div>}
  </div>
</HoverTimeProvider>

3. 额外检查项

确认DEFAULT_TABLE_COLORS已经正确导入,未导入的话可以直接使用giraffe内置的默认表格配色数组即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:01