0

我已按照这些说明在我的开发环境中启用 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 文件返回的内容。我收到来自 UglifyJS 和/或 UglifyCSS 或 Node 本身的信号“5”错误。我怀疑错误的东西被发送到某个地方。

有任何想法吗?我正在运行本地 MAMP 服务器来实现开发环境。另请注意,我已在路径中的“Git Repos”中留出了空间,以避免将路径问题等明显问题作为故障排除步骤。

更新

我尝试在我的设备中运行相同的设置,config_dev.yml发现config_prod.yml在生产端一切正常。似乎试图通过加载缩小资产app_dev.php会导致问题......但我仍然不知道是什么!如果缩小可以通过开发环境进行测试,那就太好了,这就是为什么我要为这个问题保留这个问题并鼓励对话以寻求解决方案。

4

1 回答 1

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

于 2014-07-09T23:13:56.983 回答