読者です 読者をやめる 読者になる 読者になる

Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

compassでcompileしようと思ったらTypeError on line ["43"] of c: no implicit conversion of Array into String Run with --trace to see the full backtraceというエラーが出た

制作 sass

結論から

compass compile scss/style.scss

を実行するディレクトリパスと、コンパイル後のcssを出力するディレクトリパスを合わせた文字列が長すぎるとエラーが出るみたい。

なので、少し短くしたら直った。

実行したコマンド

compass compile scss/style.scss

表示されたエラー

TypeError on line ["43"] of c: no implicit conversion of Array into String
Run with --trace to see the full backtrace

エラーをgoogle翻訳してみる

Cの行["43"]にはTypeError:文字列へのアレイの暗黙的な変換 フルバックトレースを表示するには--traceで実行

エラーをエキサイト翻訳してみる

cのライン[「43」]のTypeError:配列のストリングへの無暗黙の変換 それによって走りなさい--完全なbacktraceを見る跡

config.rbのパス記述

# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/css"
sass_dir = "scss"
images_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/img"
javascripts_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/js"

原因ぽい事と解決策

仕事上都合が良いように、サービスを作っているプロジェクトディレクトリとは全く別のところにconfig.rbとscssを置いて管理し、cssとimgはプロジェクトディレクトリのwebrootに出力する。

ということをやっていたら、上記したようにconfig.rbに書くパスが長くなった。

~/Desktop/all/svn-repos-all/hogehogea/hogehogea/html/aaaaaa_general_template/abcdefghi/assets_src

というディレクトリで

compass compile scss/style.scss

を実行するとエラーが出るけど

~/Desktop/all/svn-repos-all/hogehogea/hogehogea/html/aaaaaa_general_template/abcdefgh/assets_src

というディレクトリでコンパイルのコマンドを実行してもエラーは出なかった。

違いはabcdefghiだとエラーでabcdefghだと大丈夫。

パスが長すぎるということか。

同じく、config.rbの中の

# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/css"
sass_dir = "scss"
images_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/img"
javascripts_dir = "../../../../src/branches/general/store/Hogehoge/webroot/assets/js"

のところを、パスを短くしてみるとエラーは出ないみたい。

まぁ、相対パスでこんなに長く書くやつもなかなかいないだろうし、gulp使えばこんな事にはなってないんだけど、とにかくハマった。