Проблемы минимизации / агрегирования файлов CSS/JS с Symfony 2.5 и UglifyCSS/JS

Я следовал этим инструкциям, чтобы включить и UglifyJs2, и UglifyCss в моей среде разработки (для начала... я не могу рисковать отключением рабочего сервера с этой проблемой!)

Под моим config_dev.yml Я настроил следующее (я начал только с bin параметры, но добавлены дополнительные конфигурации на случай, если что-то другое вызовет проблему.)

assetic:
    use_controller: %use_assetic_controller%
    filters:
        uglifycss:
            bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifycss"
            node: /usr/local/bin/node
            apply_to: '\.css$'
        uglifyjs2:
            bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifyjs"
            node: /usr/local/bin/node
            apply_to: '\.js$'

и в моем base.html.twig файл:

  {% javascripts  'bundles/fosjsrouting/js/router.js'
                  'bundles/legalcheck/js/angular.min.js'
                  'bundles/legalcheck/js/plugins/*'
                  'bundles/legalcheck/js/app.js'
                  'bundles/legalcheck/js/controllers/*'
                  filter='uglifyjs2'
                %}
      <script type="text/javascript" src="{{ asset_url }}"></script>
  {% endjavascripts %}

а также

  {% stylesheets 'bundles/legalcheck/css/*' filter='cssrewrite' filter='uglifycss' %}
  <link rel="stylesheet" href="{{ asset_url }}" />
  {% endstylesheets %}

Когда я бегу php app/console assetic:dump --env=prod --verboseВсе файлы генерируются без ошибок. Они даже уменьшены в этом пункте!

Однако когда я загружаю приложение в браузер, все ресурсы CSS и JS возвращают ошибку 500.

500 ошибок

Вот что возвращает каждый файл Javascript вместе с тем, что возвращает каждый файл CSS. Я получаю ошибку "5" из-за того, что похоже на UglifyJS и / или UglifyCSS, или на сам Node. Я подозреваю, что куда-то отправляют не ту вещь.

Есть идеи? Я использую локальный сервер MAMP для создания среды разработки. Также обратите внимание, что я удалил место из "Git Repos" на своем пути, чтобы избежать очевидных проблем, таких как проблемы с путями, как шаг устранения неполадок.

Обновить

Я пытался запустить те же настройки в config_dev.yml в мой config_prod.yml и обнаружил, что все отлично работает на производстве. Похоже, что попытка загрузить минимизированные активы через app_dev.php вызывает проблемы... но я все еще не знаю что! Было бы неплохо, если бы минификацию можно было протестировать через среду разработки, поэтому я оставляю вопрос открытым как для этой проблемы, так и для поощрения диалога для ее решения.

1 ответ

Решение

ассемблерный режим отладки:)

вы сбрасываете файлы с --prod (в котором режим отладки отключен по умолчанию)...

... и попытаться получить к ним доступ в dev среда после.

Если включен режим отладки, коллекции активов будут разбиты на несколько файлов, которые выглядят так:

<hash>_partX_<filename>.js

Это то, что Chrome Devtools показывает вам, и проблема во время сброса на лету приводит к 500 ошибки.

Вы не сбросили эти файлы для отладки с помощью команды, которую вы вызвали и (до тех пор, пока у вас нет use_controller: true) они также не будут сбрасываться на лету.

Если у вас есть use_controller: true... любой ненулевой код завершения запуска фильтра приведет к 500 ошибка. Это то, что вы испытываете.


решение:

Либо отключить debug режим для одной коллекции активов, как это...

{% javascripts  '...'
    filter='uglifyjs2'
    debug=false
 %}

... или добавить...

assetic:
  debug: false

на ваш config_dev.yml, чтобы решить проблему.

Наконец, свалите свои активы с app/console assetic:dump и правильный флаг среды.

Другие вопросы по тегам