Node模块中highcharts-export-server引入highcharts-regression插件报错如何解决
解决方案
方案一:手动注入本地插件(推荐,无需修改依赖文件)
- 第一步先修正拼写错误:你代码中series配置的
regresssion: true多写了一个s,改为regression: true,属性不识别是触发报错的常见原因。 - 第二步在初始化导出池之前,手动注册插件到Highcharts实例再传入导出服务器,不需要通过resources属性加载远程CDN资源,可完全避免加载时序问题,也刚好实现你提到的「自行导入插件初始化」的需求。
修正后完整代码如下:
const exporter = require('highcharts-export-server'); const Highcharts = require('highcharts'); // 引入本地安装的回归插件并注册 require('highcharts-regression')(Highcharts); // 将自定义的Highcharts实例传入导出服务器 exporter.Highcharts = Highcharts; module.exports = (callback, classRates) => { var exportSettings = { type: 'png', options: { title: { text: 'My Chart' }, xAxis: { categories: ["Jan", "Feb", "Mar", "Apr", "Mar", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }, series: [ { regression: true, // 修正拼写错误 regressionSettings: {name:"reg", type: 'linear'}, type: 'line', data: [[1, 1], [2, 3], [3, 2], [4,4]] }, { type: 'line', data: [5, 3, 4, 2] } ] } }; exporter.initPool(); exporter.export(exportSettings, function (err, res) { callback(null, res.data); exporter.killPool(); process.exit(1); }); };
方案二:修改build.js配置(不推荐,依赖更新后配置会丢失)
如果要通过修改导出服务器内置配置加载插件,操作步骤如下:
- 找到
node_modules/highcharts-export-server/build.js文件中的modules数组 - 将本地安装的
highcharts-regression插件的完整路径添加到数组末尾 - 在该依赖目录下执行
node build.js重新构建导出服务器的静态资源包,之后启动导出服务就会自动加载该插件
你之前通过resources属性加载远程CDN插件,容易出现插件还未加载完成就开始渲染图表的时序问题,导致插件逻辑执行时找不到对应series的数据属性,触发Cannot read property 'data' of undefined报错。
内容的提问来源于stack exchange,提问作者Ken Hadden
相关产品推荐
相关产品推荐

