2014-09-23 47 views
0

我正在開發一個Rails 4項目,我使用Sass和Sass的@import將多個css合併爲一個。它工作正常,但如果我用一個新的部分爲混入(_mixins.css.scss)和僅main.css.scss @import這一點,並用混入其中添加任何其他文件後_webapp.css.scssSass :: SyntaxError:未定義的mixin'mixin_name'

@import "bootstrap/bootstrap"; 
    @import "responsive/mega_menu"; 
    @import "responsive/mixins"; 
    @import "responsive/webapp"; 

Rails的預編譯過程中無法找到「 responsive/mixins「,並給出了_webapp.css.scss

Sass::SyntaxError: Undefined mixin 'mixin_name'. 

這裏mixin_name錯誤responsive/mixins

+0

可能的重複:http://stackoverflow.com/questions/17976140/false-positive-undefined-variable-error-when-compiling-scss/17976934 – cimmanon 2014-09-23 12:06:09

回答

1

如果你的風格定義除main.css.scss以外的其他用戶使用mixin中的mixins部分,那麼您必須在其中導入它。所以看起來你需要在你的webapp部分中導入mixin。

+0

是的,這是我現在使用它的解決方案。但這不是使用Sass和混合的理想和最佳方式 – 2014-11-11 15:41:24

+0

它不理想嗎? Mixins本身不會輸出爲CSS。如果你的webapp部分依賴於那些mixin,那麼你必須包含它們。沒有真正的解決方法。 – faustman 2014-11-11 16:00:28

1

如果您的文件被命名爲mixins.css.scss,那麼只有當它被稱爲mixins.css時才能導入它,因爲SASS試圖解釋@import語句。如果沒有延期,SASS預計它是[filename].scss。您嘗試導入[filename].scss,而您的名字是[filename].css.scss。所以嘗試:

@import "responsive/mixins.css"; 
0

這聽起來像是一個資產管道問題給我。從the Rails docs

If you want to use multiple Sass files, you should generally use the Sass @import rule instead of these Sprockets directives. Using Sprockets directives all Sass files exist within their own scope, making variables or mixins only available within the document they were defined in.

你確定你沒有鏈輪指令的地方,需要responsive/webapp(甚至隱含在require_tree)?

想到的另一種可能性是這個未定義的mixin錯誤實際上可能在之前被稱爲它被導入。你確定你沒有在mega_menu的某處使用該混音嗎?

相關問題