簡體   English   中英

使用ClojureScript中的highcharts節點導出服務器的問題 - “執行圖表生成時出現0x03錯誤”

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM