2016-11-02 3 views
0

Я запускаю phantomJS 2.1.0, и я использую его для создания PDF-страниц страницы на моем сайте angularJS. На моем сервере разработки с неминифицированным кодом все работает отлично. На моем производственном сервере с мини-кодом я получаю сообщение о том, что мой модуль не загружается. Когда я использую минифицированный код на моем сервере разработки, я не получаю никаких ошибок и сообщений вообще, phantomJS просто сообщает, что он загрузил страницу, но ни один из javascript на странице не запускается. Я также вижу, что phantomJS извлекает все необходимые ресурсы для страницы.PhantomJS сбой без ошибок

ответ

0

В случае, если кто-либо еще сталкивается с этой очень неприятной проблемой, я в конце концов обнаружил, что ошибка была связана с моим кодом высоких диаграмм. При определении конфигурации одного из моих графиков я дважды определял одно и то же свойство. Например. (Я определил легенду дважды):

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

       } 
      }); 

Удаление второго определения фиксировало все. Я подозреваю, что проблема заключается в том, что браузер может обрабатывать двойные свойства, игнорируя один, но phantomJS не может, поэтому он терпит неудачу. Я до сих пор не знаю, почему минимизация кода сломала его, но он работал без ограничений, поскольку все мои контроллеры импортируются независимо от страницы, на которой вы находитесь, но, возможно, это оптимизация angularJS, которая только анализирует код для используемых в настоящее время контроллеров , но когда он рубит, он все разбирает. Или во время минимизации он сделал что-то для двойных свойств, которые нарушили разбор phantomJS этого кода.

+0

Добавление к этому, это хорошая практика для запуска вашего кода через узел или аналогичный, если у вас есть проблема с фантомом, так как существует множество случаев, когда фантом прерывается без сообщения. –

+0

@MaxUppenkamp Не могли бы вы рассказать о своем комментарии? Я не понимаю, что вы имеете в виду, запустив код через узел или аналогичный. Просто запустите 'node '? –

Смежные вопросы