WEB・アプリ開発

Undefined mixinというerrorがmiddleman build実行時に発生した場合の対処法

記事内に商品プロモーションを含む場合があります

middleman build実行時にエラーが発生

以下のようなエラーが発生しました。

エラーの全量ログはこちら

原因はscssのパーシャルにアンダーバーがなかったこと

当サイトのメインのscssはall.scssで以下のように多くのパーシャルをimportしています。

sassやscssのパーシャルはファイル名の頭にアンダーバーがないと、パーシャルだと認識されず、メインのファイルと認識されてしまいます。そこで、all.scssとは違う独自のスコープを持ってしまいUndefined mixinと言われてしまうということです。

私が独自に作ったscssは全てファイル名の頭にアンダースコアをつけていませんでしたので、つけました。例えば、laoyout/main.scssというファイルはlayout/_main.scssというように変えたところ正常にmiddleman buildを実行できました。

middleman serverで動かしている時はエラーは発生しない

今回はmiddleman build時に初めて気づきました。でも、理由はわかりませんが、ローカルの環境でmiddleman serverで動かしている時には発生しません。

参考

そして、一つお願いしたいことがあります。

もしこの記事がお役に立てたのなら、下のボタンからSNSでシェアするか、あなたのブログでご紹介頂けないでしょうか?検索エンジンの仕組みで、同じ問題で今困っている方の目に届きやすくなります。もちろん、私としても記事を書くモチベーションになります。

記事への要望やダメ出しを書いて頂いても嬉しいです。定期的にエゴサーチしており、今後の記事で活かさせて頂きます。よろしくお願いいたします!