2016-11-02 4 views
0

Ich benutze PhantomJS 2.1.0, und ich verwende es, um pdfs einer Seite auf meiner angularJS Site zu erzeugen. Auf meinem Entwicklungsserver mit nicht-minimiertem Code läuft alles einwandfrei. Auf meinem Produktionsserver mit minimiertem Code bekomme ich eine Fehlermeldung, dass mein Modul nicht geladen wurde. Wenn ich minimierten Code auf meinem Entwicklungsserver verwende, erhalte ich keinen Fehler und keine Nachrichten, phantomJS meldet nur, dass die Seite geladen wurde, aber keines der Javascript auf der Seite läuft. Ich kann auch sehen, dass phantomJS alle richtigen Ressourcen für die Seite abruft.PhantomJS schlägt mit keinem Fehler

Antwort

0

Falls jemand anderes jemals in dieses sehr frustrierende Problem geraten sollte, fand ich schließlich, dass der Fehler mit meinem Highcharts-Code war. Als ich die Konfiguration eines meiner Diagramme definiert hatte, hatte ich dieselbe Eigenschaft zweimal definiert. Z.B. (Ich definierte Legende zweimal):

$('#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' 
        } 

       } 
      }); 

Entfernen der zweiten Definition alles behoben. Ich vermute, das Problem ist, dass der Browser doppelte Eigenschaften behandeln kann, indem er eine ignoriert, aber phantomJS kann nicht, so dass es stillschweigend versagt. Ich bin mir immer noch nicht sicher, warum die Minimierung des Codes es kaputt gemacht hat, aber es hat nicht geklappt, da alle meine Controller unabhängig von der Seite importiert werden, aber vielleicht ist es eine angularJS-Optimierung, die nur den Code für die aktuell verwendeten Controller analysiert , aber wenn es minimiert wird, analysiert es alles. Oder es hat während der Vermin- derung etwas mit den doppelten Eigenschaften zu tun, die phantomJS's Parsing dieses Codes durchbrochen haben.

+0

Hinzufügen zu diesem, es ist gute Praxis, Ihren Code durch Knoten oder ähnliches, wenn Sie ein Problem mit Phantom haben, da es viele Fälle gibt, in denen Phantom ohne Nachricht bricht. –

+0

@MaxUppenkamp Können Sie Ihren Kommentar erweitern? Ich verstehe nicht, was Sie meinen, indem Sie den Code über Knoten oder Ähnliches ausführen. Führen Sie einfach 'node ' aus? –