sass error compiling zurb foundation with !global

2020-03-07 07:01发布

问题:

The 'rake --trace assets:precompile' command gives the following error:

rake aborted!
Sass::SyntaxError: Invalid CSS after "...ules: $modules ": expected "}", was "!global;"
  (in app/assets/stylesheets/foundation_and_overrides.scss:13)
foundation-rails-5.5.0.0/vendor/assets/stylesheets/foundation/_functions.scss:13
foundation-rails-5.5.0.0/vendor/assets/stylesheets/foundation/components/_global.scss:5
foundation-rails-5.5.0.0/vendor/assets/stylesheets/foundation/components/_grid.scss:5
foundation-rails-5.5.0.0/vendor/assets/stylesheets/foundation.scss:9
app/assets/stylesheets/foundation_and_overrides.scss:1327

The error appears to come from line 13 of 'foundation-rails-5.5.0.0/vendor/assets/stylesheets/foundation/_functions.scss'

  8 // IMPORT ONCE
  9 // We use this to prevent styles from being loaded multiple times for compenents that rely o    n other components.
 10 $modules: () !default;
 11 @mixin exports($name) {
 12   // Import from global scope
 13   $modules: $modules !global;
 14   // Check if a module is already on the list
 15   $module_index: index($modules, $name);
 16   @if (($module_index == null) or ($module_index == false)) {
 17     $modules: append($modules, $name) !global;
 18     @content;
 19   }
 20 }

The SASS syntax looks fine to me, and compiles without error provided I have made no edits to the generated 'app/assets/stylesheets/foundation_and_overrides.scss.' If I make the smallest change to that file, such as the following, the compilation error occurs.

--- a/app/assets/stylesheets/foundation_and_overrides.scss
+++ b/app/assets/stylesheets/foundation_and_overrides.scss
@@ -14,7 +14,7 @@ $base-font-size: 100% !default;
 // Since the typical default browser font-size is 16px, that makes the calculation for grid siz
 // If you want your base font-size to be a different size and not have it effect grid size too,
 // set the value of $em-base to $base-font-size ($em-base: $base-font-size;)
-$em-base: 16px !default;
+$em-base: 17px !default;

 // It strips the unit of measure and returns it
 @function strip-unit($num) {

Environment is Rails 4.0.8, foundation-rails 5.5.0.0

回答1:

The foundation-rails gem has set the lower bounds on their Sass dependency to >= 3.2.0, but are using a Sass 3.3 feature (the !global flag). You'll need to specify a dependency for 3.3 for your project.

I also recommend submitting a bug report to the maintainers of foundation-rails.