rake assets:precompile throws Sass::SyntaxError: Invalid CSS after “*/”

一曲冷凌霜 提交于 2019-12-04 17:55:05

问题


I hope this isn't a duplicate problem; I've tried other solutions on SO with no effect

When pushing my app to Heroku, the push has failed because application.css has not been able to compile.

My terminal output:

Running: rake assets:precompile
rake aborted!
Sass::SyntaxError: Invalid CSS after " */": expected selector, was "@font-face"
(in /tmp/build_17e92975-ae8d-446f-8678-110eeeccfb64/app/assets/stylesheets/adminsite/application.css)
(sass):1845

Attempts at solution

I've searched and deleted every instance of "*/" that comes before an @font-face inside the ../stylesheets/adminsite/ directory. Same issue and result.

I've tried setting:

  config.assets.compile = true

...Same issue

Edit

Here is my application.css (not the app level one, but the one failing in the adminsite directory)

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require jquery.ui.all
 *= require_self
 *= require normalize
 *= require ./global/plugins/bootstrap/css/bootstrap
 *= require ./global/plugins/uniform/css/uniform.default
 *= require ./global/plugins/bootstrap-switch/css/bootstrap-switch
 *= require ./global/css/components
 *= require ./global/css/plugins
 *= require ./global/plugins/simple-line-icons/simple-line-icons
 *= require ./admin/layout/css/layout
 *= require ./admin/layout/css/themes/light2
 *= require ./admin/layout/css/custom
 */

By removing and recompliling, I found that

*= require ./global/plugins/font-awesome/scss/font-awesome

that was 3 from the bottom of that list, was causing it to fail. I can now locally run

rake assets:precompile --trace RAILS_ENV=production

but I can't push to heroku using

git push herokunb newbeta:master

SOLVED:

It was the font awesome CSS. Removing that from require fixed it. The issue appeared unsolved only due to my own mistakes with git.


回答1:


Even though you found your way to fix it, I'm gonna share my solution too, because I was facing the same issue and it was kinda hard to debug it.

You're probably using rails 3.2, sass-rails 3.2 and font-awesome-sass 4.1.

It turns out that the rails 3.2 uses sass-rails 3.2.6, which depends on sass >= 3.1. However, It looks like sass 3.1 is not compatible with font-awesome 4.1, so I explicitely set the sass gem to use version 3.2 on my Gemfile.

gem 'sass-rails', '~> 3.2.6'
gem 'sass', '~> 3.2.0'

Hope this helps someone! ;)




回答2:


Another way to solve this is to explicitly tell the asset-pipeline to use the css version of the asset over the scss one. For example, if you're importing a .scss file in your application.scss like this:

@import "angular-material";      # this will use scss version of the asset

You can alternatively tell it to use the css version like so:

@import "angular-material.css";  # this will use the css version

Most vendors provide scss and css versions, so it is useful to rely on css versions of assets especially when using vendor assets. Remember everything will be precompiled and uglified in the end, so wither you use scss or css they all end up the same.




回答3:


SOLUTION

The file that was breaking things was the font awesome CSS. Removing that from application.css's "require" lines allowed the precompilation to work.

The way to do this was to first delete all of the precompilation require fields, showing that it would compile, and then to slowly add the require fields back to see where it broke.

(Thanks for all those who helped figure this out.)




回答4:


For me, I forgot to add # in front of the class sign-in.

It should be

#sign-in 
  (your code)



回答5:


I'm a newbie to rails and was having a similar issue when pushing to heroku. A friend looked at my application.css file and noticed that I had

*= require bootstrap

and

*= require bootstrap-datetimepicker

below the */

Removing them allowed me to push successfully.




回答6:


I ran into a similar issue as well and stumbled upon this thread. Turned out for me, I left a } off of the end of one of my CSS statements. Added it in and I was back up within minutes.



来源:https://stackoverflow.com/questions/25722267/rake-assetsprecompile-throws-sasssyntaxerror-invalid-css-after

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!