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

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

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

Я пробовал настройку:

  config.assets.compile = true

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

Edit

Вот мой 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 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

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

git push herokunb newbeta:master

РЕШИТЬ:

Это был потрясающий CSS-шрифт. Удаление из этого требует исправления. Проблема возникла нерешенной только из-за моих собственных ошибок с помощью git.

Ответ 1

Решение

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

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

(Спасибо всем, кто помог понять это.)

Ответ 2

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

Вероятно, вы используете 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 для использования версии 3.2 на моем Gemfile.

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

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

Ответ 3

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

Ответ 4

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

Это должно быть

#sign-in 
  (your code)

Ответ 5

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

*= require bootstrap

и

*= require bootstrap-datetimepicker

ниже */

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

Ответ 6

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