【问题标题】:AngularJS material error on asset:precompile资产上的AngularJS材料错误:预编译
【发布时间】:2016-05-02 04:47:12
【问题描述】:

我在资产管道内的 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)

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

现在有没有办法在 assets: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);
...

【问题讨论】:

  • 你能把代码粘贴到“angular-material.layouts.ie_fixes.scss:25”周围吗?
  • 删除有问题的行会暂时解决问题吗?
  • 如果我删除 23 到 30 行,它仍然会失败,但在下一个几乎相同的块上,但最大宽度为:600px。它仍然有那个屏幕\0 代码。
  • 如果我在 ie_fixes 文件中将所有 screen\0 更改为 screen\\0,那么我的编译工作。
  • 我如何暂时从我的预编译中忽略这个文件,直到 angular-material 解决了这个问题?

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


【解决方案1】:

这是 Angular 材质中的一个已知问题,您可以从 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 ')
%> 

这是一个 hack,但它应该可以工作

【讨论】:

  • 我仍然收到错误消息。它似乎在抱怨 angular-material.layout-attributes.min.css & angular-material.layouts.ie_fixes.css 而不是 angular-material.scss 文件。我已更改代码以使用这些文件,但仍然出现错误。我认为问题在于它在修复之前加载了错误的 css 文件。
  • 也许是因为你在样式表之前就已经编译了?尝试删除已编译的文件
  • 我删除了 public/assets 目录,但仍然遇到同样的问题。
  • 能否请您发布您的 application.css 文件?
猜你喜欢
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 2012-01-25
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多