Rails 5,Sass :: SyntaxError无法预编译资产

时间:2016-09-07 18:24:26

标签: css ruby-on-rails ruby sass

我已经开始了一个新项目(Rails 5.0.0.1&& ruby 2.3.1p112),似乎无法让资产进行预编译。我目前的结构是这样的。

应用程序/资产/配置/ manifest.js

//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

应用程序/资产/样式表/ application.scss

*
*= require_tree .
*= require font-awesome
*= require style
*= require_self
*/

应用程序/资产/样式表/ style.scss

@import "bootstrap-sprockets";
@import "bootstrap";

// shared styling
@import 'shared/variables';
@import 'shared/content';
...
...

应用程序/视图/布局/ application.html.haml

...
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
...

在我的app / assets / stylesheets / helpers / _varibles.scss文件中我设置了一些varibles

$font-family-standard: 'Arial', sans-serif;
$font-family-default: 'Open Sans', 'Arial', sans-serif;

$color-primary: #ff7e5b;
$color-gray: #898989;
$color-dark: #292c33;
$color-darker: #3f4248;

但是当我运行rails server /尝试运行bundle exec rake assets:precompile时,我得到了这个:

be rake assets:precompile
rake aborted!
Sass::SyntaxError: Undefined variable: "$color-dark".
/Users/Nexus/Personal/Projects/Rubyfuza/rubyfuza/app/assets/stylesheets/helpers/_content.scss:3
/Users/Nexus/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
/Users/Nexus/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

我不知道这里发生了什么。任何帮助都感激不尽。

2 个答案:

答案 0 :(得分:0)

您正在使用$color-dark中未定义的app/assets/stylesheets/helpers/_content.scss:3变量

您需要在_content.scss

中导入它
@import 'shared/variables'

答案 1 :(得分:0)

你必须删除

= require_tree .

/*
*
*= require_tree .
*= require font-awesome
*= require style
*= require_self
*/

存在于app / assets / stylesheets / application.scss中,因为资产管道继续编译样式表目录中存在的每个文件,因此需要使用@import指令来包含变量partial,这是默认行为上海社会科学院。但如果你这样做,你可以防止这种情况。