Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ClojureScript使用highcharts节点导出服务器时出现的问题;0x03执行图表生成时出错";_Javascript_Node.js_Highcharts - Fatal编程技术网

Javascript 从ClojureScript使用highcharts节点导出服务器时出现的问题;0x03执行图表生成时出错";

Javascript 从ClojureScript使用highcharts节点导出服务器时出现的问题;0x03执行图表生成时出错";,javascript,node.js,highcharts,Javascript,Node.js,Highcharts,我在Node.js上有一个clojurescript应用程序,我正在尝试将highcharts导出服务器用作Node.js模块,以便生成用于生成PDF的图表 我遵循了“Using as a Node.js Module”下面的示例:。此示例使用以下javascript对象作为图表的输入数据: var exportSettings = { type: 'png', options: { title: { text: 'My Chart' },

我在Node.js上有一个clojurescript应用程序,我正在尝试将highcharts导出服务器用作Node.js模块,以便生成用于生成PDF的图表

我遵循了“Using as a Node.js Module”下面的示例:。此示例使用以下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错误:请检查您的输入数据“

文档示例在regular 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))))

逗号在Clojure中是可选的。它们是在转换为JavaScript对象时通过clj->js转换自动添加的。你能把这个系列对象的样子贴出来吗。我真正想要的是看看数字是否被转换成字符串或其他类似的东西。这是正确的。[{type:'line',data:[1,3,2,4]},{type:'line',data:[5,3,4,2]}]Omg。当然,你完全正确。在几个小时的注视和改变细节的过程中,我完全忽略了这一点。正如您所怀疑的,在回调中调用killPool可以解决问题。