“没有这样的文件或目录”在Ubuntu 13.10上运行TypeScript

时间:2013-10-24 22:04:53

标签: node.js ubuntu typescript

我似乎在尝试从源代码构建它的过程中破坏了我在Ubuntu 13.10上的TypeScript安装。我已经放弃了,现在只想回到工作二进制安装。

我删除了--purge的NodeJS并通过

重新安装
sudo apt-get install nodejs

并确保'node'确实指向NodeJS(而不是我卸载的Ubuntu包“node”)。在命令行输入node会使我进入NodeJS提示符,看起来很好。

然后我重新安装了npm,然后通过

重新安装了TypeScript二进制文件
sudo npm -g install TypeScript@0.9.1-1

导致

npm http GET https://registry.npmjs.org/typescript/0.9.1-1
npm http 304 https://registry.npmjs.org/typescript/0.9.1-1
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
typescript@0.9.1-1 /usr/local/lib/node_modules/typescript

我检查了which tsc指向/usr/local/bin/tsc。该文件的内容是:

#!/usr/bin/env node
require('./tsc.js')

目录/usr/local/lib/node_modules/typescript/bin/包含

drwxr-xr-x  3 nobody rolyp    4096 Oct 24 22:55 ./
drwxr-xr-x  3 nobody rolyp    4096 Oct 24 22:55 ../
-rw-r--r--  1 nobody rolyp  323793 Aug 21 17:17 lib.d.ts
drwxr-xr-x 16 nobody rolyp    4096 Oct 24 22:55 resources/
-rwxr-xr-x  1 nobody rolyp      42 Aug 21 17:17 tsc*
-rw-r--r--  1 nobody rolyp 2565152 Aug 21 17:17 tsc.js
-rw-r--r--  1 nobody rolyp 2509628 Aug 21 17:17 typescript.js

最后,如果我手动更改目录,请键入node,然后在NodeJS提示符下输入require('./tsc.js'),然后tsc成功运行。

但如果我在命令行输入tsc,我只会收到一条晦涩的消息

`: No such file or directory`

请注意,我收到错误env: node: No such file or directory,这是我第一次在Ubuntu上安装TypeScript时遇到的错误,因为节点/ NodeJS冲突。

任何人都可以通过tsc告诉我从命令行运行node需要做什么,因为我可以按照上面的说明手动启动它?

5 个答案:

答案 0 :(得分:13)

我从包管理器安装节点作为nodejs。要解决问题:“没有这样的文件或目录”运行TypeScript,我使用来自https://github.com/joyent/node/issues/3911的digitalmediums sugestion: 只需创建符号链接:

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

答案 1 :(得分:6)

sudo gedit / usr / local / lib / node_modules / typescript / bin / tsc

更新了初始内容

#!/usr/bin/env node
require('./tsc.js')

#!/usr/bin/env nodejs
require('./tsc.js')

答案 2 :(得分:3)

我在创建自己的nodejs命令行工具时遇到了同样的问题。我使用netbeans在Windows上创建了该工具,并从那里将其发布到npmjs。在Ubuntu上使用npm安装后我尝试运行它,但是我收到了相同的错误消息。我尝试了一切来修复它,我甚至重新安装了Ubuntu但没有任何效果。

我发现的解决方案非常简单。我创建了一个新的入口点文件(以#!/ usr / bin / env节点开头的文件),并将旧文件的内容复制到其中。我也是这样使用netbeans,但这次是在Ubuntu上。可能文件编码不同。

因此,在您的情况下,只需在将旧的tsc文件复制到其他位置后,在同一位置(/ usr / local / lib / node_modules / typescript / bin / tsc)创建一个新的tsc文件,然后复制并粘贴内容旧的一个到新的。可能这应该由TypeScript开发人员修复。

答案 3 :(得分:3)

在ubuntu上,安装包nodejs-legacy

apt-get install nodejs-legacy

答案 4 :(得分:1)

您可以使用node运行tsc,而node tsc代替tsc。这应该适用于mac / linux / windows。