使用Symfony 2.5和UglifyCSS / JS缩小/聚合CSS / JS文件的问题

时间:2014-07-09 14:35:51

标签: php node.js symfony uglifyjs2 uglifycss

我已经关注these instructions以便在我的开发环境中启用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 Errors

Here's what each Javascript file returns以及what each CSS file returns。我从UglifyJS和/或UglifyCSS或Node本身看起来有一个信号“5”错误。我怀疑在某处发送了错误的信息。

有什么想法吗?我正在运行本地MAMP服务器来实现开发环境。还要注意我已经从我的路径中取出了“Git Repos”的空间,以避免像路径问题这样的明显问题作为故障排除步骤。

更新

我尝试将config_dev.yml中的相同设置运行到我的config_prod.yml中,发现一切都在生产方面完美运行。似乎试图通过app_dev.php加载缩小的资产会导致问题......但我仍然不知道是什么!如果缩小可以通过开发环境进行测试,这将是很好的,这就是为什么我要为这个问题留下问题并鼓励对话以解决问题。

1 个答案:

答案 0 :(得分: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和正确的环境标记转储您的资产。