Cou*_*one 43 build-automation coffeescript 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]
Run Code Online (Sandbox Code Playgroud)
我的构建系统看起来像这样:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
有两件事情很奇怪.
1)它说它正在查找存在/usr/bin符号链接的位置coffee.
2)由于(1),我推翻$PATH,包括实际位置coffee是/usr/local/lib/node_modules/coffee-script/bin,但出于某种原因,$PATH没有被覆盖得当,它与默认的坚持$PATH.
注意事项:
i)我已经验证所有路径都是正确的,并通过常规终端命令正常传递.
ii)尝试使用"shell": true构建系统中的变量.
iii)我有另一个Compass这样的构建系统,工作正常.
有人遇到类似的问题或问题吗?有任何想法吗?
Mat*_*DMo 96
在终端中,键入which node,然后在该位置创建符号链接/usr/bin.例如,如果node生活在/usr/local/bin,则创建符号链接,如下所示:
sudo ln -s /usr/local/bin/node /usr/bin/node
Run Code Online (Sandbox Code Playgroud)
如果你查看coffee脚本的来源,你可能会发现第一行是:
#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)
Sublime中的退出代码127意味着env命令失败 - 所以在您的情况下,构建系统正在查找coffee,但它无法执行它,因为node二进制文件不在Sublime的默认搜索路径中.
有两种方法可以重新定义Sublime的默认搜索路径.第一个(也是最简单的)是始终使用内置命令从命令行打开它subl.如果您是OS X超级用户,并且不介意搞乱重要的系统设置,请查看我在unix.SE上的帖子,了解如何更改/usr/bin:/bin:/usr/sbin:/sbin您看到的默认路径.预先警告,如果你没有正确地做事,你可能会破坏你的系统.但是,如果您正在运行Mountain Lion(10.8.X)并且您完全按照说明操作,那么一切都应该没问题.(我还没有升级到Mavericks,因此无法保证它是否适用于该版本.)
Sto*_*yes 30
如何解决Ubuntu系统下的问题
事实是"coffee"命令将调用/ usr/bin/node继续其工作,但是,Ubuntu系统上节点应用程序的原始"node"命令从"node"更改为"nodejs"以避免名称冲突.这就是原因,shell将符合你"/ usr/bin/env:node:没有这样的文件或目录".每当你打字
$ coffee
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,只需让shell在其默认搜索路径中找到一个名为"node"的东西,这个所谓的"node"将提升nodejs.命令"nodejs"位于/ usr/bin/nodejs的路径下.
我们将使用符号链接将"node"链接到nodejs,并将链接"node"放在默认搜索路径中,以便shell找到它.
sudo ln -s /usr/bin/nodejs /usr/bin/node
Run Code Online (Sandbox Code Playgroud)
但要注意,确保在/ usr/bin /下没有其他"节点"命令,您可以通过尝试运行来检查它
$ which node
Run Code Online (Sandbox Code Playgroud)
如果您安装了另一个"节点"应用程序,我不知道该怎么办.
wna*_*ich 24
在Ubuntu中,您可以安装包nodejs-legacy
sudo apt-get install nodejs-legacy
Run Code Online (Sandbox Code Playgroud)
这个包只是创建一个二进制nodejs的符号链接
| 归档时间: |
|
| 查看次数: |
45366 次 |
| 最近记录: |