ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

PyCharmで /usr/bin/env: node: No such file or directory

PyCharmを使い始めたのは最近だし、機能の1%程度しか使っていないがたまにPyCharmについて聞かれる。

聞かれると言っても私よりもドキュメントを読んでいない人たちからの質問ばかり。

何度も何度も言うように人に聞く前に自分で調べろ、調べる前にドキュメントを読め、使う前にドキュメントを読め。

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-

 
つくって覚えるCoffeeScript入門

つくって覚えるCoffeeScript入門

 

====
今回の質問は、PyCharmでCoffeeScriptを使おうとしているがうまく動かせないということ。

環境としてはUbuntuLinux 14.04。UbuntuLinuxのaptラインにあるCoffeeScriptやnodejsが古いのでGitHubからnvmをインストールしてnode.jsを動かし、そのnodeからCoffeeScriptやらLessやらを動かそうとしているとのこと。

 

だがターミナルエミュレータから「bin/pycharm.sh」を実行すると問題なく動くのだが、ショートカットから起動させると以下のエラーで動かないとのこと。

/home/kmasaya/bin/nvm/versions/node/v0.12.0/bin/coffee --bare --compile manage.coffee

/usr/bin/env: node: No such file or directory



Process finished with exit code 127

 これは手元で再現させたエラー。まぁ多分、同じような環境で動かそうとすれば必ずこの問題は出るかと思う。

 

これは簡単にはPyCharmが保持しているコマンドのサーチパスにnodeが見つからないというだけ。

ターミナルエミュレータのシェルなんかで起動させると、シェルの環境変数を引き継いでPyCharmが起動する。シェルにはnvmを起動させるように設定しているだろうからサーチパスに自動的にnodeが追加されるが、ショートカットを作成して起動させるとサーチパスにnodeが含まれずに起動されるためにnodeが見つからない。よってこのエラーが表示される。

これはCoffeeScriptだけではなく、Lessなんかのnodeで動くものは全て影響を受ける。

 

コレを説明すると「シェルから毎回起動させるのは不便」だという。

誰が「毎回シェルから起動させないと解決しない」と言ったのか。開発者にももちろんnvmを利用している人も居るだろう。PyCharmがCoffeeScriptやLessを公式にサポートしているのにnvmを無視するわけがあるまい。

ということでこの問題を簡単に解決するための設定が用意されている。

いや、この問題だけではなく「環境変数」と言う問題を解決するための機能になる。

 

[image:id=360]

[image:id=361]

 

設定は簡単。File Watchersの設定からCoffeeScriptなんかのウォッチング設定を開く。そして「Enviroment variables」画面を開く。


[image:id=362]


そうするとこんなウインドウが表示されるので、「Name」には「PATH」を、「Value」には「/home/kmasaya/bin/nvm/versions/node/v0.12.0/bin:$PATH」てな感じでサーチパスを追加しておく。

コレで完了。これで先のエラーは表示されずにビルドできるように成る。

 

なぜウォッチャーの設定をしている時にこの設定画面を無視して見なかったのだろうか。