崇高文本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": true
variables。
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