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

pdfkit结合google-charts-node传动态数据报google is not defined错误

问题解决方案

错误根源

GoogleChartsNode.render() 方法要求传入的第一个参数是未执行的绘图函数本身:库内部会在预加载了Google Charts的无头浏览器环境中执行该函数,执行时自动注入google、container两个全局变量。
你当前的写法是先在本地Node环境直接执行了drawtIntelligenceBarchar(intelligence),再把执行返回值传给render,本地Node环境没有注入google全局变量,因此抛出未定义错误。

修复方案

通过GoogleChartsNode.render的第二个参数传递动态参数,调整调用逻辑即可,完整可运行代码如下:

const GoogleChartsNode = require('google-charts-node');

function drawtIntelligenceBarchar(intelligence) {
  console.log(intelligence)
  try{
    const data = google.visualization.arrayToDataTable([
      ['Intelligence', 'Intelligence Level',],
      ["Linguistic", intelligence["Linguistic"]],
      ["Logical", intelligence["Logical"]],
      ["Musical", intelligence["Musical"]],
      ["Visual-Spatial", intelligence["Visual-Spatial"]],
      ["Kinesthetic", intelligence["Kinesthetic"]],
      ["Intra-Personal", intelligence["Intra-Personal"]],
      ["Inter-Personal", intelligence["Inter-Personal"]],
      ["Naturalistic", intelligence["Naturalistic"]],
      ["Existential", intelligence["Existential"]]
    ]);

    const options = {
      title: 'Intelligence Graph',
      chartArea: {width: '70%'},
      hAxis: {
        title: 'AVERAGE   GOOD    VERY GOOD    EXCELLENT',
        minValue: 0,
        maxValue: 100,
      },
      vAxis: {
        title: 'INTELLIGENCE TYPE'
      }
    };

    const chart = new google.visualization.BarChart(container);
    chart.draw(data, options);
  } catch(error){
    console.log(error);
  }
}

// 调整此处调用逻辑:第一个参数传函数本身,args数组放要传入的动态参数
const intelligenceGraph = await GoogleChartsNode.render(drawtIntelligenceBarchar, {
  args: [intelligence]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:01