Rails SCSS 全局变量

Rails SCSS global variables

我已经将我的项目设置为使用 Bootstrap 和 scss 与 Webpacker,但是,每当我在本地启动我的服务器时,我都会收到此错误:

ActionView::Template::Error (Error: Undefined variable: "$secondary-accent".
        on line 76:23 of app/assets/stylesheets/_hero.scss
>>   border: solid 0.5px $secondary-accent;

如果我进行硬刷新,这个错误实际上会在本地消失,但当然,Capistrano 并不那么宽容,我还是想找出问题所在。

在我的 /app/javascscript/ 文件夹中,我有一个 src/style.scss 文件,它导入了所需的样式表。

@import '../../assets/stylesheets/_globals.scss'; //import globals first so the values propagate to Bootstrap
@import '~bootstrap/scss/bootstrap'; //import bootstrap
@import '../../assets/stylesheets/application.scss' //import everything else;

/assets/stylesheets/application.scss 看起来像:

@import '_navbar';
@import 'actiontext';
@import '_hero';
@import 'comments';
@import 'static_pages';

body {
  font-family: $body-font;
  font-size: $standard;
}

当然,摆脱它的简单方法是将 @import 'globals' 添加到每个部分,但这似乎不适合 sass 方式。我真的不想在每个 .scss 文件的顶部添加 @import 'globals',目前这没什么大不了的,但是随着项目的增长和样式的复杂性增加,可维护性可能会令人头疼.我以为 Webpacker 会处理这个,我错了吗?我在设置中遗漏了什么吗?

Ps。我意识到这个问题已经被问过几十次了,但它们似乎都是针对 Rails 的旧版本,或者解决方案不适用于我(例如从 application.css

通过稍微加强我的 Webpacker 设置解决了这个问题。

最大的问题是安装 scss 我认为我的 gemfile 中的 sass-rails 就足够了,但我还需要 yarn add scss。我不需要只在 application.scss.

中导入 src/style.scss 中的全局变量