我正在尝试使用highcharts导出服务器生成可变饼图(以及堆积图-稍后会详细介绍)。
我同时使用curl和带有JSON数据的POST请求。两者都有问题。在export.highcharts.com
以及本地docker导出服务器上。本质上,所有图表配置都是根据highcharts网站进行的。
顺便说一句,“简单”示例图表在两种使用情况下都能很好地工作。
现在,这是curl命令:
curl -H "Content-Type: application/json" -X POST -d '{"infile": {"chart": {"type": "variablepie"}, "title": {"text": "Countriescomparedbypopulationdensityandtotalarea."}, "series": [{"minPointSize": 10, "innerSize": "20%", "zMin": 0, "name": "countries", "data": [{"name": "Spain", "y": 505, "z": 92}, {"name": "France", "y": 551, "z": 11}, {"name": "Poland", "y": 312, "z": 12}]}]}, "type": "svg", "resources": {"files": "highcharts.js,modules/exporting.js,modules/export-data.js,modules/variable-pie.js"}}' http://export.highcharts.com -o /tmp/highcharts_testchart.svg
具有上述curl命令的有效负载的POST返回400;否则,返回400。但是,服务器响应包含以下html代码段:
SyntaxError:意外令牌“ 在解析时(/var/app/current/node_modules/highcharts-export-server/node_modules/body-parser/lib/types/json.js:83:15) 在/var/app/current/node_modules/highcharts-export-server/node_modules/body-parser/lib/read.js:116:18 在invokeCallback(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:262:16) 完成时(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:251:7) 在IncomingMessage.onEnd(/var/app/current/node_modules/highcharts-export-server/node_modules/raw-body/index.js:307:7) 在emitNone(events.js:86:13) 在IncomingMessage.emit(events.js:185:7) 在endReadableNT(_stream_visible.js:974:12) 在_combinedTickCallback(内部/进程/next_tick.js:80:11) 在process._tickCallback(internal / process / next_tick.js:104:9)
有没有人设法获得饼图以使用导出服务器工作?有人对堆栈跟踪发表评论吗?
更新以下内容已得到修复(POST请求中的引号未通过)
最后,进入堆积图。在这里变得令人困惑。 curl
命令:
curl -H "Content-Type: application/json" -X POST -d '{"infile": {"chart": {"type": "column"}, "title": {"text": "Stacked column chart"}, "xAxis": {"categories": ["Apples", "Oranges", "Pears", "Grapes", "Bananas"]}, "yAxis": {"min": 0, "title": {"text": "Total fruit consumption"}, "stackLabels": {"enabled": true, "style": {"fontWeight": "bold"}}}, "legend": {"align": "right", "x": -30, "verticalAlign": "top", "y": 25, "floating": true, "borderColor": "#CCC", "borderWidth": 1, "shadow": false}, "plotOptions": {"column": {"stacking": "normal", "dataLabels": {"enabled": true}}}, "series": [{"name": "John", "data": [5, 3, 4, 7, 2]}, {"name": "Jane", "data": [2, 2, 3, 2, 1]}, {"name": "Joe", "data": [3, 4, 4, 2, 5]}]}, "type": "svg", "resources": {"files": "highcharts.js,modules/exporting.js,modules/export-data.js"}}' http://export.highcharts.com -o /tmp/highcharts_testchart.svg
工作正常-并产生完美的图像。
但是OST(有效载荷相同)给出了上述堆栈跟踪。
有什么想法吗?有评论吗?
不胜感激。
答案 0 :(得分:0)
我设法找到了解决方案。在node-export-server
Github上检查该线程:https://github.com/highcharts/node-export-server/issues/156。如您所见,缺少几个模块,需要手动添加它们。
1)在您的node-export-server
存储库中找到 build.js 文件,并将variable-pie
模块添加到该对象:
const cdnScriptsOptional = {
'{{version}}/modules/sunburst.js': 1,
'{{version}}/modules/xrange.js': 1,
'{{version}}/modules/streamgraph.js': 1,
'{{version}}/modules/tilemap.js': 1,
'{{version}}/modules/histogram-bellcurve.js': 1,
'{{version}}/modules/variable-pie.js': 1
};
2)重建服务器(请参见https://github.com/highcharts/node-export-server#setup-injecting-the-highcharts-dependency):
node build.js
(在node-export-server文件夹中)3)启动服务器:
highcharts-export-server --enableServer 1
4)运行此卷曲:
curl -H "Content-Type: application/json" -X POST -d '{"infile":{"chart": {"type": "variablepie"}, "title": {"text": "Title"}, "series": [{"minPointSize": 10, "innerSize": "20%", "zMin": 0, "name": "countries", "data": [{"name": "Spain", "y": 505, "z": 92}, {"name": "France", "y": 551, "z": 11}, {"name": "Poland", "y": 312, "z": 12}]}]}, "type": "svg"}' 127.0.0.1:7801 -o chart.svg
不幸的是,您不能强制 http://export.highcharts.com 添加variable-pie
模块。目前,仅可以使用自己的node-export-server导出此系列类型。