Sublime Text 3でCoffeeScriptビルドシステムをセットアップしようとしていますが、次のエラーが発生し続けます。
env: node: No such file or directory
[Finished in 0.0s with exit code 127]
[cmd: ['coffee', '-o','/Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/script', '-cw', '/Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/coffee']]
[dir: /Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/coffee]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
私のビルドシステムは次のようになります。
{
"name": "Coffee - AT",
"cmd": ["coffee","-o","${project_path:${folder}}/static/script","-cw","${project_path:${folder}}/static/coffee"],
"selector": "source.coffee",
"path":"/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/lib/node_modules/coffee-script/bin"
}
これについて奇妙な点が2つあります。
1)/usr/bin
coffee
へのシンボリックリンクが存在する場所。
2)(1)のため、私は$PATH
coffee
の実際の場所を含めるには、/usr/local/lib/node_modules/coffee-script/bin
、しかし何らかの理由で、$PATH
は適切にオーバーライドされず、デフォルトの$PATH
。
注意事項:
i)すべてのパスが正しく、通常の端末コマンドを正常に通過することを確認しました。
ii)"Shell": true
ビルドシステムの変数。
iii)このようなコンパス用の別のビルドシステムがあり、正常に動作します。
誰もが同様の問題や問題に遭遇しましたか?何か案は?
ターミナルでwhich node
と入力し、/usr/bin
のその場所へのシンボリックリンクを作成します。たとえば、node
が/usr/local/bin
にある場合、次のようなシンボリックリンクを作成します。
Sudo ln -s /usr/local/bin/node /usr/bin/node
coffee
スクリプトのソースを見ると、おそらく最初の行が次の行に沿っていることがわかります。
#!/usr/bin/env node
Sublimeの終了コード127は、env
コマンドが失敗したことを意味します。したがって、ビルドシステムはcoffee
を検出していますが、node
が原因で実行できません。バイナリはSublimeのデフォルトの検索パスにありません。
Sublimeのデフォルトの検索パスを再定義するには2つの方法があります。最初の(そして最も簡単な)方法は、組み込みの subl
コマンドを使用して、常にコマンドラインから開くことです。あなたがOS Xパワーユーザーであり、重要なシステム設定をいじるのを気にしないなら、デフォルトの/usr/bin:/bin:/usr/sbin:/sbin
パスを変更する方法についてunix.SEの my post をチェックしてください。再見る。物事を正しく行わないと、システムが破損する可能性があることに注意してください。ただし、Mountain Lion(10.8.X)を実行していて、指示に正確に従うと、すべてが正常に動作するはずです。 (私はMavericksにアップグレードしていないので、そのバージョンで動作するかどうかの保証はありません。)
buntuシステムでの問題の解決方法
実際のところ、「coffee」コマンドは/ usr/bin/nodeを呼び出して作業を続行しますが、Ubuntuシステム上のノードアプリケーションの元の「node」コマンドは、名前の競合を避けるために「node」から「nodejs」に変更されます。 。そのため、シェルは「/ usr/bin/env:node:No such file or directory」に準拠します。入力するたびに
$ coffee
バグを解決するには、シェルにデフォルトの検索パスで「node」という名前の何かを見つけさせるだけで、このいわゆる「node」はnodejsを昇格させます。コマンド「nodejs」は、/ usr/bin/nodejsのパスの下にあります。
シンボルリンクを使用して「node」をnodejsにリンクし、リンク「node」をデフォルトの検索パス内に配置して、シェルが検出できるようにします。
Sudo ln -s /usr/bin/nodejs /usr/bin/node
ただし、/ usr/bin /の下に別の「node」コマンドがないことを確認してください。実行しようとすると確認できます。
$ which node
別の「ノード」アプリケーションをインストールした場合の対処方法がわかりません。
Ubuntuでは、パッケージnodejs-legacyをインストールできます
Sudo apt-get install nodejs-legacy
このパッケージは、バイナリnodejsへのシンボリックリンクを作成するだけです。
マシンにシンボリックリンクを追加する必要なく、ビルドシステムでこれをすべて修正できるはずです。
たとえば、ノードが/ usr/local/bin/nodeにある場合は、build_systemのパスを次のように変更するだけです。
"path": "/usr/local/bin:$PATH"
Ubuntu 14.04では次のコードが機能しました。
**$ Sudo apt-get install NodeJS-legacy**
もう1つの問題は、次のようなバージョンチェックフレームワークでした:gulp -v
同じコードもこの問題を解決しました。
私はSublime Text 2でも同じ問題を抱えていました。この崇高なビルドを作成することでうまくいきました。
{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"
}
コンソールに次を入力します。
Sudo ln -s /usr/bin/nodejs /usr/bin/node