SASS: Недопустимый @import: ожидаемый конец строки, был ";" - иногда
У меня есть файл sass, который содержит только операторы импорта
@import "this";
@import "that";
если я запустил sass из командной строки все хорошо
bundle exec sass foo.scss:foo.css
Если, однако, я запускаю его из script (также через bundle exec), он расстраивается из-за этих точек с запятой. Это...
template = File.read("foundation.scss")
sass_engine = Sass::Engine.new(template)
sass_output = sass_engine.render
... вызывает вызов sass_engine.render:
(sass):1: Invalid @import: expected end of line, was ";". (Sass::SyntaxError)
если я избавлюсь от точки с запятой, тогда ситуация изменится на противоположную. Он жалуется на командную строку, а не на script.
Что происходит, и как заставить его принимать точки с запятой при запуске из script?
Ответы
Ответ 1
Отличие заключается в том, что программа командной строки Sass отмечает расширение "scss" и анализирует файл как SCSS вместо традиционного Sass. При программировании вы запускаете движок Sass и не говорите ему, что это SCSS.
Итак, ошибка заключается в том, что он читает ее как Sass вместо SCSS.
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options
Это должно решить вашу проблему правильно!
template = File.read("foundation.scss")
sass_engine = Sass::Engine.new(template, :syntax => :scss)
sass_output = sass_engine.render
Viola!