【问题标题】:Problems minifying/aggregating CSS/JS files with Symfony 2.5 and UglifyCSS/JS使用 Symfony 2.5 和 UglifyCSS/JS 缩小/聚合 CSS/JS 文件的问题
【发布时间】:2014-07-09 14:35:50
【问题描述】:

我已关注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 错误。

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 加载缩小的资产会导致问题......但我仍然不知道是什么!如果缩小可以通过开发环境进行测试,那就太好了,这就是为什么我将这个问题留给这个问题并鼓励对话以寻求解决方案的原因。

【问题讨论】:

    标签: php node.js symfony uglifyjs2 uglifycss


    【解决方案1】:

    assetic 的调试模式 :)

    您正在使用--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 和正确的环境标志转储您的资产。

    【讨论】:

    • 糟糕,我的问题没有提到我自己也运行了php app/console assetic:dump(我不知道为什么我没有提到...),我仍然遇到问题.但是,我没有在资产集合中使用调试模式尝试您的解决方案。我没有添加debug=false,而是使用filter='?uglifyjs2' 在开发环境中关闭Uglify。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多