web-dev-qa-db-ja.com

rake Assets:precompile throws Sass :: SyntaxError: "* /"の後に無効なCSS

これが重複した問題ではないことを願っています。 SO効果なしで他の解決策を試しました

アプリをHerokuにプッシュすると、application.cssをコンパイルできなかったため、プッシュが失敗しました。

私の端末出力:

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

解決の試み

../stylesheets/adminsite/ディレクトリ内の@ font-faceの前にある「* /」のすべてのインスタンスを検索して削除しました。同じ問題と結果。

私は設定を試みました:

  config.assets.compile = true

...同じ問題

編集

これが私のapplication.cssです(アプリレベルのものではありませんが、adminsiteディレクトリで失敗します)

/*
 * 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
 */

削除して再コンパイルすることで、

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

それはそのリストの下から3であり、失敗の原因でした。ローカルで実行できるようになりました

rake assets:precompile --trace Rails_ENV=production

しかし、使用してherokuにプッシュすることはできません

git Push herokunb newbeta:master

解決済み:

それは素晴らしいCSSのフォントでした。それを削除する必要がありますそれを修正しました。この問題は、私自身のgitの間違いが原因でのみ未解決のように見えました。

11
Will Taylor

[〜#〜]ソリューション[〜#〜]

物事を壊していたファイルは、フォントの素晴らしいCSSでした。 application.cssの「require」行からそれを削除すると、プリコンパイルが機能するようになりました。

これを行う方法は、最初にすべてのコンパイル前のrequireフィールドを削除して、コンパイルされることを示し、次にrequireフィールドをゆっくりと追加して、どこで壊れたかを確認することでした。

(これを理解するのを手伝ってくれたすべての人に感謝します。)

0
Will Taylor

あなたがそれを修正する方法を見つけたとしても、私は同じ問題に直面していて、それをデバッグするのがちょっと難しかったので、私の解決策も共有するつもりです。

おそらくRails3.2、sass-Rails 3.2、およびfont-awesome-sass4.1を使用しています。

Rails3.2sass-Rails3.2.6を使用していることがわかります。これは、sass> =3.1。ただし、sass3.1はfont-awesome4.1と互換性がないようです。そのため、Gemfileでバージョン3.2を使用するようにsassgemを明示的に設定しました。 =。

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

これが誰かを助けることを願っています! ;)

12

これを解決する別の方法は、アセットのcssバージョンをscssバージョンよりも使用するようにアセットパイプラインに明示的に指示することです。たとえば、次のようにapplication.scssに.scssファイルをインポートする場合:

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

または、次のようにcssバージョンを使用するように指示することもできます。

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

ほとんどのベンダーはscssバージョンとcssバージョンを提供しているため、特にベンダーアセットを使用する場合は、cssバージョンのアセットに依存すると便利です。最終的にはすべてがプリコンパイルされて醜くなるので、scssまたはcssを使用すると、それらはすべて同じになります。

1
moeabdol

私はRailsの初心者で、herokuにプッシュするときに同様の問題が発生していました。友人が私のapplication.cssファイルを見て、私が持っていることに気づきました。

*= require bootstrap

そして

*= require bootstrap-datetimepicker

*/の下

それらを削除すると、正常にプッシュできました。

0
darrellcohn

私の場合、クラスのサインインの前に#を追加するのを忘れていました。

そのはず

#sign-in 
  (your code)
0
Kevin Zhao

私も同様の問題に遭遇し、このスレッドに出くわしました。私の場合、CSSステートメントの1つの終わりから}を残しました。それを追加すると、数分以内にバックアップされました。

0
PSCampbell