2016-11-02 161 views
0

我正在运行phantomJS 2.1.0,并且我正在使用它来在我的angularJS站点上生成页面的pdf。在我的开发服务器上使用un-minified代码,一切都很完美。在具有缩小代码的生产服务器上,我收到有关未加载模块的错误。当我在我的开发服务器上使用缩小的代码时,我没有发现任何错误,也没有任何消息,phantomJS只是报告它已经加载好了页面,但页面上没有任何javascript运行。我还可以看到phantomJS为页面检索所有适当的资源。PhantomJS失败,没有错误

回答

0

如果有人遇到这个非常令人沮丧的问题,我最终发现这个错误是在我的highcharts代码中。当定义我的一个图表的配置时,我已经定义了两次相同的属性。例如。 (我定义了两次图例):

$('#data-chart').highcharts({ 
       title: { 
        style: { 
         display: 'none' 
        } 
       }, 
       credits: false, //do not show 'Highcharts.com' on chart 
       colors: ['#264653', '#2a9d8f', '#e9c46a', '#f4a261', '#e76f51', '#67a9e5', '#f8ed08', '#7b69a9','#91e8e1'], 
       legend: { 
        enabled: false 
       }, 
       yAxis: [ 
        {title: { text: null } }, 
        { 
         opposite: true,   //show secondary y-axis on right side of graph 
         title: { text: null } //Hide y-axis title 
        } 
       ], 
       plotOptions: { 
        column: { 
         pointPadding: 0, 
         borderWidth: 0, 
         groupPadding: 0.15 
        }, 
        series: { 
         stacking: 'normal' 
        } 
       }, 
       tooltip: { 
        shared: true 
       }, 
       legend: { 
        layout: 'horizontal', 
        align: 'center', 
        verticalAlign: 'top', 
        borderWidth: 0, 
        symbolWidth: 16, 
        symbolPadding: 10, 
        itemStyle: { 
         color: '#a8aab7', 
         fontFamily: 'Roboto', 
         fontWeight: 'bold', 
         fontSize: '14px' 
        } 

       } 
      }); 

删除第二个定义修复了一切。我怀疑问题是浏览器可以通过忽略一个来处理双重属性,但是幻像JS不能这样做,所以它会默默地失败。我仍然不确定为什么缩小代码会破坏它,但是它没有缩小,因为我的所有控制器都是导入的,不管你在哪个页面上,但可能是angularJS优化,它只解析当前正在使用的控制器的代码,但是当缩小时它解析所有的东西。或者在缩小过程中,它对双重属性做了一些事情,这导致phantomJS解析该代码。

+0

此外,如果您有幻像问题,则通过节点或类似方式运行代码是一种很好的做法,因为有很多幻像在没有消息的情况下会中断的情况。 –

+0

@MaxUppenkamp你可以扩展你的评论吗?我不明白你的意思是通过节点或类似的代码运行代码。只需运行'node '? –