我正在尝试在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"
}
有两件事情很奇怪。
1)它说它正在/usr/bin
中查找coffee
的符号链接。
2)由于(1),我覆盖$PATH
以包含coffee
/usr/local/lib/node_modules/coffee-script/bin
的实际位置,但出于某种原因,$PATH
不是被正确覆盖,它坚持使用默认的$PATH
。
注意事项:
i)我已经验证所有路径都是正确的,并通过常规终端命令正常传递。
ii)在构建系统中尝试使用"shell": true
变量。
iii)我有另一个Compass这样的构建系统可以正常工作。
任何人遇到类似的问题或问题?有什么想法吗?
答案 0 :(得分:96)
在终端中,键入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的默认搜索路径。第一个(也是最简单的)是使用内置的subl
命令始终从命令行打开它。如果您是OS X超级用户,并且不介意搞乱重要的系统设置,请查看unix.SE上的my post,了解如何更改您看到的默认/usr/bin:/bin:/usr/sbin:/sbin
路径。预先警告,如果你没有正确地做事,你可能会破坏你的系统。但是,如果您正在运行Mountain Lion(10.8.X)并且您完全按照说明操作,那么一切都应该没问题。 (我还没有升级到Mavericks,因此无法保证它是否适用于该版本。)
答案 1 :(得分:30)
如何解决Ubuntu系统下的问题
事实是“coffee”命令将调用/ usr / bin / node继续其工作,但是,Ubuntu系统上的节点应用程序的原始“node”命令从“node”更改为“nodejs”避免名称冲突。这就是原因,shell将符合你“/ usr / bin / env:node:没有这样的文件或目录”。无论何时键入
$ coffee
要解决这个问题,只需让shell在其默认搜索路径中找到名为“node”的内容,这个所谓的“node”将提升nodejs。命令“nodejs”位于/ usr / bin / nodejs的路径下。
我们将使用符号链接将“node”链接到nodejs,并将链接“node”放在默认搜索路径中,以便shell找到它。
sudo ln -s /usr/bin/nodejs /usr/bin/node
但要注意,请确保在/ usr / bin /下没有其他“node”命令,您可以通过尝试运行来检查它
$ which node
如果您安装了另一个“节点”应用程序,我不知道该怎么办。
答案 2 :(得分:24)
在Ubuntu中,您可以安装包nodejs-legacy
sudo apt-get install nodejs-legacy
这个包只是创建一个二进制nodejs的符号链接
答案 3 :(得分:2)
您应该能够在构建系统中解决所有问题,而无需在计算机上添加符号链接。
例如,如果节点位于/ usr / local / bin / node中,您只需将build_system中的路径更改为:
"path": "/usr/local/bin:$PATH"
答案 4 :(得分:1)
Sublime Text 2遇到了同样的问题。 创建这个崇高的构建对我有用:
{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"
}
答案 5 :(得分:1)
以下代码在Ubuntu 14.04中适用于我:
**$ sudo apt-get install NodeJS-legacy**
另一个问题是版本检查框架,例如:gulp -v
相同的代码也解决了这个问题。
答案 6 :(得分:1)
在控制台中输入下一个:
sudo ln -s /usr/bin/nodejs /usr/bin/node