崇高文本CoffeeScript构build系统:`env:node:没有这样的文件或目录

我想在Sublime Text 3中build立一个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] 

我的构build系统如下所示:

 { "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" } 

有两件事很奇怪

1)它表示它正在/usr/bin中查找coffee的符号链接。

2)由于(1),我忽略了$PATH来包含coffee的实际位置,它是/usr/local/lib/node_modules/coffee-script/bin ,但由于某种原因, $PATH没有被正确覆盖,它坚持使用默认的$PATH

注意事项:

i)我已经validation了所有的path是正确的,并通过正常的terminal命令正常传递。

ii)在构build系统中尝试使用"shell": truevariables。

iii)我有另一个Compass的构build系统,像这样工作正常。

任何人遇到类似的问题或问题? 有任何想法吗?

在Terminal中,inputwhich node ,然后在/usr/bin创build一个符号链接。 例如,如果node位于/usr/local/bin ,则创build如下所示的符号链接:

 sudo ln -s /usr/local/bin/node /usr/bin/node 

如果你看看你的coffee脚本的来源,你可能会发现,第一行是一些线:

 #!/usr/bin/env node 

在Sublime中退出代码127意味着一个env命令失败 – 所以在你的情况下,构build系统正在寻找coffee ,但它不能执行它,因为node二进制文件不在Sublime的默认searchpath中。

有两种方法可以重新定义Sublime的默认searchpath。 第一个(也是最简单的)总是使用内置的subl命令从命令行打开它。 如果你是一个OS X的高级用户,并不介意重要的系统设置,请查看我在UNIX上关于如何修改默认的/usr/bin:/bin:/usr/sbin:/sbin path你看到了 预先警告,如果你不正确地做事,你可能会破坏你的系统。 但是,如果您正在运行Mountain Lion(10.8.X),并且按照说明进行操作,则一切都会好起来的。 (我还没有升级到小牛,所以不能保证它是否可以使用该版本。)

如何解决Ubuntu系统下的问题

事实上,“coffee”命令会调用/ usr / bin / node继续工作,但是Ubuntu系统上节点应用程序的原始“节点”命令从“node”更改为“nodejs”,以避免名称冲突。 这就是为什么shell会遵从你“/ usr / bin / env:node:没有这样的文件或目录”。 每当你input

 $ coffee 

为了解决这个问题,只要让shell在默认的searchpath中find名为“node”的东西,这个所谓的“node”就会促进nodejs。 命令“nodejs”位于/ usr / bin / nodejs的path下。

我们将使用符号链接将“node”与nodejs链接,并将链接“node”放置在默认searchpath中,以便shell能够find它。

 sudo ln -s /usr/bin/nodejs /usr/bin/node 

但要小心,确保在/ usr / bin /下没有另外的“节点”命令,可以通过尝试运行来检查它

 $ which node 

如果您安装了另一个“节点”应用程序,我不知道该怎么做。

在Ubuntu中,您可以安装包nodejs-legacy

 sudo apt-get install nodejs-legacy 

这个包只是创build一个二进制nodejs的符号链接

您应该能够在您的构build系统中修复这一切,而无需在您的机器上添加符号链接。

例如,如果节点位于/ usr / local / bin / node中,则只需将build_system中的path更改为:

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

我有与崇高文本2相同的问题。创build这个崇高的构build为我工作:

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

下面的代码在Ubuntu 14.04中为我工作:

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

另一个问题是版本检查框架,例如: gulp -v相同的代码也解决了这个问题。

在控制台中input下一个:

 sudo ln -s /usr/bin/nodejs /usr/bin/node