[英]Issues using highcharts node export server from ClojureScript - “0x03 error when performing chart generation”
我在Node.js上有一个clojurescript应用程序,并且我正在尝试将highcharts导出服务器用作Node.js模块,以生成用于生成PDF的图表。
我在这里按照“使用作为Node.js模块”中的示例进行了跟踪: https : //github.com/highcharts/node-export-server 。 此示例使用以下javascript对象作为图表的输入数据:
var exportSettings = {
type: 'png',
options: {
title: {
text: 'My Chart'
},
xAxis: {
categories: ["Jan", "Feb", "Mar", "Apr", "Mar", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
series: [
{
type: 'line',
data: [1, 3, 2, 4]
},
{
type: 'line',
data: [5, 3, 4, 2]
}
]
}
};
在clojurescript中复制此示例,将导出设置定义为clojurescript映射并将其转换回javascript对象:
(def test-chart (clj->js {:type "png"
:options {:title {:text "My Chart"}
:xAxis {:categories ["Jan", "Feb", "Mar", "Apr", "Mar", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]}
:series [{:type "line"
:data [1 3 2 4]}
{:type "line"
:data [5 3 4 2]}]}}))
将测试图对象记录到控制台确认它与示例中使用的javascript对象相同:
{ type: 'png',
options: { title: { text: 'My Chart' },
xAxis: { categories: [Array] },
series: [{ type: 'line', data: [ 1, 3, 2, 4 ] },
{ type: 'line', data: [ 5, 3, 4, 2 ] }]
}
}
进一步调用所需的Highcharts函数来设置phantom.js工作池并生成图表,如示例所示:
(doto Highcharts
(.initPool)
(.export test-chart (fn [err res]
(when err (println "****" err))))
(.killPool))
当使用转换后的clojure映射作为输入数据调用export时,会看到错误“执行图表生成时出现0x03错误:请检查输入数据” 。
文档示例在常规Node.JS中工作,但是当使用从clojure映射转换的输入数据从clojurescript调用导出时,导出会因此输入数据错误而失败。 由于转换后的对象从控制台看起来是正确的,并且其他所有内容都应该通过javascript互操作完成,我不确定这里的问题是什么。
如果从clojure映射转换,是否会导致导出器无法解析输入数据对象? 或者问题可能是其他问题,检查输入数据是误导性的错误信息?
您的ClojureScript代码不等同于自述文件中的示例代码。 在示例中, killPool
在传递给export
的回调函数中调用。 在您的版本中,您在调用导出后立即调用killPool
,因此图表生成可能没有时间完成。 我怀疑这是导致错误的原因。
更新后的ClojureScript如下所示:
(doto Highcharts
(.initPool)
(.export test-chart (fn [err res]
(when err (println "****" err))
(.killPool Highcharts))))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.