Coffeescript 升华文本咖啡脚本生成系统:`env:node:没有这样的文件或目录`

Coffeescript 升华文本咖啡脚本生成系统:`env:node:没有这样的文件或目录`,coffeescript,build-automation,sublimetext,sublimetext3,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/jcourtd

我正试图在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
,那里有一个指向
咖啡的符号链接

2) 由于(1),我重写了
$PATH
以包含
coffee
的实际位置,即
/usr/local/lib/node_modules/coffee script/bin
,但由于某些原因,
$PATH
没有被正确重写,它坚持默认的
$PATH

注意事项:

i) 我已经验证了所有路径都是正确的,并且正常地通过一个常规的终端命令

ii)在构建系统中尝试使用
“shell”:true
变量

iii)我有另一个类似这样的指南针构建系统,运行良好


有人遇到过类似的问题吗?有什么想法吗?

在终端中,键入
哪个节点
,然后在
/usr/bin
中创建指向该位置的符号链接。例如,如果
节点
位于
/usr/local/bin
中,则按如下方式创建符号链接:

sudo ln -s /usr/local/bin/node /usr/bin/node
如果您查看
coffee
脚本的源代码,您可能会发现第一行内容大致如下:

#!/usr/bin/env node
升华中的退出代码127表示
env
命令失败-因此在您的情况下,生成系统正在查找
coffee
,但无法执行它,因为
节点
二进制文件不在升华的默认搜索路径中


有两种方法可以重新定义升华的默认搜索路径。第一个(也是最简单的)是始终使用内置命令从命令行打开它。如果您是OS X超级用户,并且不介意弄乱重要的系统设置,请在unix.SE上查看如何更改您看到的默认路径
/usr/bin:/bin:/usr/sbin:/sbin
。事先得到警告,如果你做事不正确,你可能会破坏你的系统。但是,如果您正在运行Mountain Lion(10.8.X),并且严格按照说明进行操作,那么一切都应该正常。(我还没有升级到Mavericks,因此无法保证它是否能与该版本一起使用。)

我在Sublime Text 2上也遇到了同样的问题。 创建这个崇高的构建对我来说很有用:

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

如何在Ubuntu系统下解决问题

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

$ coffee
为了解决这个bug,只需让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

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

您应该能够在构建系统中修复这一切,而无需在计算机上添加符号链接

例如,如果节点位于/usr/local/bin/node中,则只需将构建系统中的路径更改为:

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

在Ubuntu中,您可以安装nodejslegacy包

sudo apt-get install nodejs-legacy

这个软件包只是创建了一个指向二进制nodejs的符号链接,以下代码在Ubuntu 14.04中对我有用:

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

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

在控制台中键入下一个:

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

Debian/Ubuntu的一个更标准的解决方案是安装nodejs遗留软件包,它创建了这个符号链接。这是我在ubuntu14.04上的解决方案。请提供更详细的答案,可能为其他人和提出问题的人提供链接或参考源,以供将来参考。这在Ubuntu上也发生过,使用
apt install
命令。于是,我创建了软链接,咖啡和节点开始工作。