SIBYL System

Windows + Sublime Text 2 で HTMLPrettify を使った時にNode.jsが無いと言われる件

sublime

Windows + Sublime Text2という環境で、HTMLPrettifyのHTML整形機能を使った時に、上記のようなメッセージが表示されることがあります。Node.jsが入っていないのか確認してみると、node.jsは問題なく入っているし、コマンドプロンプト上でもnodeコマンドを実行できます。

githubにある解説を見るとnode_pathの記述が間違っている場合があるので気をつけてねとのこと。

バックスラッシュ(\マーク)ではなく、スラッシュでパスを区切る必要があるようです。あとこのパス自体が間違っていないかも要確認。

しかし、私はここの記述は間違っておらず、原因を特定できませんでした。

次に「Ctrl + `」でSublime Text2のコンソールを開いて何かログが出ていないかを確認。

どうもエラーを吐いています。

エラーの該当箇所である「HTMLPrettify.py」を確認します。

ここのsubprocess.Popenでエラーを履いていました。cmd変数をascii文字にエンコードする処理が含まれているようで、cmd変数にユニコードな文字列があるとエラーとなってしまうようです。

で、原因となっているcmdの文字列ですが、中身は何かというと、HTML整形対象ファイルのパスが含まれていました。今回はこれが原因でUnicodeEncodeErrorを投げているにもかかわらず、node.jsのパスが通ってないよ!という間違ったエラーメッセージを出力しているようです。

SublimeText3はif分岐で本処理を通っていないので影響ないのかな?

対処したいところですが、pythonの文字列処理に詳しくないので誰か直してください。

暫定対処としては「パスに日本語文字列を含めない」。これでいきましょう。

ちなみにエラーハンドル部分。

ここでのエラーは何であれNode.jsが無いよってメッセージになるようです。

 

モバイルバージョンを終了