[英]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.