2014-07-09 57 views
0

为了在我的开发环境中启用UglifyJs2和UglifyCss,我遵循these instructions(首先...不能冒险取下生产服务器这个问题!)使用Symfony 2.5和UglifyCSS/JS缩小/聚合CSS/JS文件的问题

在我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

assetic的调试模式:)

你倾倒的文件与--prod(其默认情况下禁用调试模式)...

...并尝试访问他们之后的环境为dev

如果调试模式是启用资源集合将被分成多个文件看起来像这样:

<hash>_partX_<filename>.js 

这就是铬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和正确的环境标志。

+0

糟糕,我的问题没有提及,我也自己运行了'php app/console assetic:dump'(我不知道为什么我没有提到过......),而且我还有问题。但是,我没有在资产集合中以调试模式尝试解决方案。我没有添加'debug = false',而是使用'filter ='?uglifyjs2''来关闭开发环境中的Uglify。 – sjagr