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
相关产品推荐
相关产品推荐

