资产上的AngularJS材料错误:预编译

时间:2016-05-02 04:47:12

标签: ruby-on-rails angularjs asset-pipeline angular-material

我在资产管道中的Rails 3.2项目中使用AngularJS 1.5。当我像这样编译资产时;

rake assets:precompile

尝试编译时出现此错误

/usr/local/rbenv/versions/2.1.5/bin/ruby ./bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
Multithreading on 1 processors
Starting Asset Compile: 2016-05-02 01:49:20 UTC
/usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rails-assets-angular-material-1.1.0.rc4/app/assets/stylesheets/angular-material/layouts/angular-material.layouts.ie_fixes.scss:25: Invalid CSS after "and ": expected "{", was "(max-width: 599..." (Sass::SyntaxError)
  (in /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rails-assets-angular-material-1.1.0.rc4/app/assets/stylesheets/angular-material/layouts/angular-material.layouts.ie_fixes.scss)
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1189:in `expected'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1125:in `expected'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:1120:in `tok!'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:656:in `block'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:409:in `media_directive'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:222:in `special_directive'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:197:in `directive'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:675:in `block_child'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:668:in `block_contents'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:125:in `stylesheet'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/scss/parser.rb:41:in `parse'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/engine.rb:406:in `_to_tree'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-3.4.22/lib/sass/engine.rb:281:in `render'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sass-rails-3.2.6/lib/sass/rails/template_handlers.rb:106:in `evaluate'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/context.rb:193:in `block in evaluate'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/context.rb:190:in `each'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/context.rb:190:in `evaluate'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/processed_asset.rb:16:in `initialize'
rake aborted!
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/base.rb:18:in `new'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/base.rb:18:in `block in build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/base.rb:270:in `circular_call_protection'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/base.rb:14:in `build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/index.rb:93:in `block in build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/caching.rb:19:in `cache_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/index.rb:92:in `build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/base.rb:169:in `find_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/index.rb:14:in `find_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/bundled_asset.rb:12:in `initialize'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/base.rb:22:in `new'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/base.rb:22:in `build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/index.rb:93:in `block in build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/caching.rb:19:in `cache_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/index.rb:92:in `build_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/base.rb:169:in `find_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/sprockets_overrides/index.rb:14:in `find_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/manifest.rb:178:in `block in find_asset'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/manifest.rb:199:in `benchmark'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-2.2.3/lib/sprockets/manifest.rb:177:in `find_asset'
EOFError: end of file reached
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:101:in `block (2 levels) in worker'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:98:in `block in worker'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:90:in `fork'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:90:in `worker'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:30:in `block (2 levels) in compile'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:29:in `times'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:29:in `block in compile'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/sprockets-derailleur-0.0.9/lib/sprockets-derailleur/manifest.rb:10:in `compile'
    from /home/map7/code/pais/config/initializers/sprockets_derailleur.rb:11:in `compile'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/tasks/assets.rake:108:in `internal_precompile'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/turbo-sprockets-rails3-0.3.14/lib/turbo-sprockets/tasks/assets.rake:115:in `block (3 levels) in <top (required)>'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:150:in `invoke_task'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `each'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `block in top_level'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:115:in `run_with_threads'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:100:in `top_level'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:78:in `block in run'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:176:in `standard_exception_handling'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/application.rb:75:in `run'
    from /usr/local/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rake-10.3.2/bin/rake:33:in `<top (required)>'
    from ./bin/rake:16:in `load'
    from ./bin/rake:16:in `<main>'
/home/map7/code/pais/config/initializers/sprockets_derailleur.rb:11:in `compile'
Tasks: TOP => assets:precompile:all
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [/usr/local/rbenv/versions/2.1.5/bin/ruby ....]

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

如果我将angular-material.layouts.ie_fixes.scss文件重命名为gem中的.bak,那么它可以工作,但这不是一个好的解决方案。

有没有办法在资产中排除此文件:precompile?

更新

以下是angular-material.layouts.ie_fixes.scss文件中的行,我认为它实际上是抱怨第23行,即使它说的是25。

23 @media screen\0
24 and (max-width: 599px) {
25     .flex-xs {
26         -webkit-flex: 1 1 0%;
27         -ms-flex: 1 1 0%;
28         flex: 1 1 0%;
29     }
30 }

更新

这是我的application.scss文件的顶部部分

/*
 *= require angular-bootstrap
 *= require angular-xeditable
 *= require app/bower_components/angular-material/angular-material.min
 *= require app/bower_components/angular-material-data-table/dist/md-data-table
 *= require textAngular
 *= require header
 *= require nav
 *= require tables
 *= require error
 *= require help
 *= require dashboard
 *= require listing
 *= require form
 *= require timesheets
 *= require invoices
 *= require reports
 *= require print
 *= require jquery.ui.datepicker
 *= require font-awesome
 *= require ng-table
*/

/* 
   all.css.scss

   Holds global styles for common elements throughout all pages which are not covered in specific stylesheets.

 */
@import "global.css.scss";
@import url(https://fonts.googleapis.com/css?family=Roboto:300,500,700);
...

1 个答案:

答案 0 :(得分:0)

这是角度素材中的一个已知问题,您可以从here看到。

github问题中提出的一种可行的解决方法是添加

@import "angular_material_fixed";

到您的application.scss,然后在/app/assets/stylesheets/_angular_material_fixed.scss.erb中添加一个包含以下代码的新文件

<%= 
  # Workaround for this issue: https://github.com/angular/material/issues/6304
  # TODO: remove this once angular-material 1.0.6 is released
  original = File.read(File.expand_path('../../../../../vendor/assets/javascripts/bowe r_components/angular-material/angular-material.scss', __FILE__))
  original.gsub('screen\0', 'screen ')
%> 

它是一个黑客,但它应该工作