Sass :: SyntaxError:未定义的mixin' mixin_name'

时间:2014-09-23 11:40:59

标签: ruby-on-rails-4 sass pre-compilation

我正在开发一个Rails 4项目,我使用Sass和Sass的@import将多个css合并为一个。它工作正常,但如果我在mix _mixins.css.scss中使用新的部分(main.css.scss)并且仅在_webapp.css.scss中导入此内容并且使用mixin,则在 @import "bootstrap/bootstrap"; @import "responsive/mega_menu"; @import "responsive/mixins"; @import "responsive/webapp"; 之后添加任何其他文件

responsive/mixins

Rails预编译过程无法找到" _webapp.css.scss"并在Sass::SyntaxError: Undefined mixin 'mixin_name'.

中给出错误
mixin_name

此处responsive/mixins在{{1}}

中定义

3 个答案:

答案 0 :(得分:1)

如果main.css.scss以外的样式表使用了mixin partial中的mixins,那么你也必须在其中导入它。因此,您似乎需要在webapp部分中导入mixins。

答案 1 :(得分:1)

如果您的文件名为mixins.css.scss,那么您只能在调用mixins.css时将其导入,因为SASS会尝试解释@import语句。如果没有扩展名,SASS预计它为[filename].scss。您的名字为[filename].scss时,您尝试导入[filename].css.scss。所以试试:

@import "responsive/mixins.css";

答案 2 :(得分:0)

这听起来像是一个资产管道问题。来自the Rails docs

  

如果要使用多个Sass文件,通常应使用Sass @import规则   而不是这些Sprockets指令。使用Sprockets指令,所有Sass文件都存在于其中   他们自己的范围,使变量或混合仅在他们定义的文档中可用。

你确定在某个地方没有sprocket指令,需要responsive/webapp(甚至隐含在require_tree中)?

另一种可能的想法是,这个未定义的mixin错误在导入之前实际上可能被称为。你确定你没有在mega_menu中使用那个mixin吗?