Sublime Text CoffeeScript构建系统:`env:node:没有这样的文件或目录`

时间:2013-11-19 01:38:23

标签: coffeescript build-automation sublimetext sublimetext3

我正在尝试在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这样的构建系统可以正常工作。

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

7 个答案:

答案 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