2014-09-08 14 views
11

Mam nadzieję, że to nie jest duplikat problemu; Próbowałem innych rozwiązań na SO bez skutkuaktywa rake: prekompilacja wyrzuca Sass :: SyntaxError: Nieprawidłowy CSS po "* /"

Podczas przesyłania mojej aplikacji do Heroku, pushowanie nie powiodło się, ponieważ plik application.css nie mógł się skompilować.

moje wyjście terminala:

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 

Próby rozwiązania

Rozglądałem i usunięte wszystkie wystąpienia "* /", który występuje przed @ font-face w kasecie ../ arkusz stylów/adminsite /. Ten sam problem i wynik.

Próbowałem ustawienie:

config.assets.compile = true 

... sam problem

Edit

Oto moja application.css (nie aplikacja jeden poziom, ale jeden braku w katalogu administracyjnym)

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

Rem przepełnienie i ponowna kompilacja, okazało się, że to 3 z dołu tej listy spowodowało niepowodzenie, ponieważ było to 3 z dołu tej listy. Teraz mogę lokalnie uruchomić

rake assets:precompile --trace RAILS_ENV=production 

ale nie mogę wcisnąć do Heroku użyciu

git push herokunb newbeta:master 

rozwiązany:

To było niesamowite czcionka CSS. Usunięcie tego z wymaga naprawienia. Problem wydawał się nierozwiązany tylko z powodu moich własnych błędów z git.

+0

Jest to plik w katalogu tymczasowym, a nie w katalogu projektu. Usuń plik i spróbuj ponownie. Jeśli nadal narzeka, otwórz plik i opublikuj treść w linii 1845 (lub w dowolnym miejscu, na które się skarży). – Substantial

+0

Czy możesz opublikować plik application.css? –

+0

opublikował application.css. Nie ma "/ tmp/build_17e92975-ae8d-446f-8678-110eeeccfb64 /" ... wydaje się być skonstruowane i usunięte podczas korzystania z prowizji? –

Odpowiedz

0

ROZWIĄZANIE

Plik, który został łamanie rzeczy było niesamowite czcionki CSS. Usunięcie tego z linii "require" application.css umożliwiło działanie prekompilacji.

Aby to zrobić, najpierw usuń wszystkie wymagane pola prekompilacji, pokazując, że się skompiluje, a następnie powoli dodawaj pola wymagane, aby zobaczyć, gdzie się zepsuł.

(Dzięki dla wszystkich, którzy pomogli wymyślimy.)

11

Nawet jeśli znaleźć swoją drogę, aby go naprawić, będę akcji moje rozwiązanie też, bo stoi ten sam problem i to było trochę trudne do debugowania.

Prawdopodobnie używasz rails 3.2, sass-rails 3.2 i font-awesome-sass 4.1.

Okazuje się, że rails3,2 wykorzystuje sass-rails3.2.6, która zależy od sass> = 3,1. Jednak wygląda sass 3.1 nie jest kompatybilny z font-awesome4,1, więc jawnie ustawić sass gem używać wersji 3.2 na moim Gemfile.

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

Mam nadzieję, że to pomoże komuś! ;)

+2

Miałem ten sam problem, różne wersje, po tym jak bazowy klejnot 'sass' został zaktualizowany z wersji 3.3.10 do 3.4.9. Ustawienie go jawnie w Gemfile poprawiło to: 'gem 'sass', '~> 3.3.10'' – Curtis

+0

Uaktualnienie' font-awesome-sass' działało dla mnie – laffuste

0

Dla mnie zapomniałem dodać # przed logowaniem się do klasy.

Powinno być

#sign-in 
    (your code) 
0

Jestem newbie na szynach i został mające podobny problem podczas pchania do Heroku. Przyjaciel spojrzał na mojego pliku application.css i zauważyłem, że miałem

*= require bootstrap

i

*= require bootstrap-datetimepicker

poniżej */

Usuwanie im pozwolił mi skutecznie naciskać.

0

Wpadłem na podobny problem i natknąłem się na ten wątek. Okazało się, że opuściłem} koniec jednego z moich oświadczeń CSS. Dodałem go i wróciłem w ciągu kilku minut.

0

Innym sposobem rozwiązania tego problemu jest jednoznaczne przekazanie zasygnalizowanemu zasobowi aktywów, aby używał wersji CSS zasobu na scss. Na przykład, jeśli jesteś importowania pliku .scss w application.scss jak ten:

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

alternatywnie można powiedzieć, że do korzystania z wersji css tak:

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

Większość sprzedawców zapewnić wersje scss i css, więc warto polegać na wersjach CSS, szczególnie w przypadku zasobów dostawców. Pamiętaj, że wszystko będzie w końcu prekompilowane i podrobione, więc jeśli użyjesz scss lub css, to wszystko skończy się tak samo.

Powiązane problemy