web-dev-qa-db-ja.com

Sublime Text CoffeeScriptビルドシステム: `env:node:No such file or directory`

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/bincoffeeへのシンボリックリンクが存在する場所。

2)(1)のため、私は$PATHcoffeeの実際の場所を含めるには、/usr/local/lib/node_modules/coffee-script/bin、しかし何らかの理由で、$PATHは適切にオーバーライドされず、デフォルトの$PATH

注意事項:

i)すべてのパスが正しく、通常の端末コマンドを正常に通過することを確認しました。

ii)"Shell": trueビルドシステムの変数。

iii)このようなコンパス用の別のビルドシステムがあり、正常に動作します。

誰もが同様の問題や問題に遭遇しましたか?何か案は?

42
CourtDemone

ターミナルで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にアップグレードしていないので、そのバージョンで動作するかどうかの保証はありません。)

96
MattDMo

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

別の「ノード」アプリケーションをインストールした場合の対処方法がわかりません。

30
Storm-Eyes

Ubuntuでは、パッケージnodejs-legacyをインストールできます

Sudo apt-get install nodejs-legacy

このパッケージは、バイナリnodejsへのシンボリックリンクを作成するだけです。

24
wnasich

マシンにシンボリックリンクを追加する必要なく、ビルドシステムでこれをすべて修正できるはずです。

たとえば、ノードが/ usr/local/bin/nodeにある場合は、build_systemのパスを次のように変更するだけです。

"path": "/usr/local/bin:$PATH"
2
Craig

Ubuntu 14.04では次のコードが機能しました。

**$ Sudo apt-get install NodeJS-legacy** 

もう1つの問題は、次のようなバージョンチェックフレームワークでした:gulp -v同じコードもこの問題を解決しました。

1
Raphael Viana

私はSublime Text 2でも同じ問題を抱えていました。この崇高なビルドを作成することでうまくいきました。

{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"  
}
1
caulitomaz

コンソールに次を入力します。

Sudo ln -s /usr/bin/nodejs /usr/bin/node
1
MaicolBen