rake assets:precompile throws Sass:: SyntaxError: недопустимый CSS после "*/"

Я надеюсь, что это не дубликат проблемы; я пробовал другие решения на SO без эффекта

при нажатии моего приложения на Heroku толчок не удался, потому что приложение.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

попытки решения

Я искал и удалял каждый экземпляр"*/", который появляется перед @font-face внутри ../ таблицы стилей / adminsite / каталог. Тот же вопрос и результат.

Я пробовал параметр:

  config.assets.compile = true

...Тот же вопрос

редактировать

вот мое заявление.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
 */

удалив и recompliling, я обнаружил, что

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

это было 3 из нижней части этого списка, вызывало его сбой. Теперь я могу локально запустить

rake assets:precompile --trace RAILS_ENV=production

но я не могу нажать на heroku используя

git push herokunb newbeta:master

решила:

это был шрифт awesome CSS. Удаление этого из require исправлено. Вопрос оказался нерешенным только из-за моих собственных ошибок с git.

6 ответов


несмотря на то, что вы нашли способ исправить это, я собираюсь поделиться своим решением тоже, потому что я столкнулся с той же проблемой, и было трудно отладить его.

вы, вероятно, используете rails 3.2, sass-rails 3.2 и font-awesome-sass 4.1.

получается, что rails 3.2 использует sass-rails 3.2.6, от которой зависит sass>= 3.1. Однако, похоже sass 3.1 не совместимы с font-awesome 4.1, поэтому я эксплицитно установил sass gem для использования версии 3.2 на моем Gemfile.

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

надеюсь, это поможет кому-то! ;)


решение

файл, который ломал вещи, был шрифтом awesome CSS. Удаление из приложения.строки "require" css позволили предварительной компиляции работать.

способ сделать это состоял в том, чтобы сначала удалить все поля precompilation require, показывая, что он будет компилироваться, а затем медленно добавить поля require, чтобы увидеть, где он сломался.

(спасибо всем, кто помог разобраться.)


для меня я забыл добавить # перед входом в класс.

Он должен быть!--2-->

#sign-in 
  (your code)

Я новичок в rails и имел аналогичную проблему при нажатии на heroku. Друг посмотрел мое заявление.css файл и заметил, что у меня есть

*= require bootstrap

и

*= require bootstrap-datetimepicker

ниже */

удаление их позволило мне успешно нажать.


Я столкнулся с аналогичной проблемой и наткнулся на эту тему. Оказалось, что я оставил a } в конце одного из моих CSS-операторов. Добавил его, и я вернулся через несколько минут.


другой способ решить эту проблему-явно сказать конвейеру активов использовать css-версию актива над scss. Например, если вы импортируете .файл 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 активов, особенно при использовании активов поставщика. Помню, все будет precompiles и uglified в конце концов, поэтому вы используете scss или css, все они заканчиваются одинаково.