在Linux Mint中,我安装了node并使用它来安装typescript。对于一个工作的typescript安装,tsc --version
应该返回版本号。在我的例子中,什么都不返回。
当我运行which tsc
的结果是/usr/local/bin/tsc
。
当我运行cat /usr/local/bin/tsc
时,结果是:
#!/usr/bin/env node
require('../lib/tsc.js')
当我运行find /usr/local -name 'tsc*'
的结果是:
/usr/local/bin/tsc
/usr/local/lib/node_modules/typescript/bin/tsc
/usr/local/lib/node_modules/typescript/lib/tsc.js
这看起来正确吗?如果是这样的话,我希望你能告诉我还有什么可以看的?
注意我也试着运行/usr/local/lib/node_modules/typescript/bin/tsc --version
,得到了相同的结果,即没有
在我的情况下,Ubuntu 16.04的问题是因为我执行了sudo apt-get install node-typescript
,这给了我坏了的tsc。在通过apt-get remove
删除它之后,然后按照npm install -g typescript
的建议安装,它工作得很好。
我发现运行node --version
没有返回任何东西(但不应该)但是nodejs --version
工作(结果是v0.10.25
)。重新安装节点无法修复此问题。我不知道为什么会出现这种情况,因为我认为我遵循了推荐的安装过程。
但是,编辑文件/usr/local/bin/tsc并更改行:
#!/usr/bin/env node
#!/usr/bin/env nodejs
似乎有效。现在tsc --version
返回message TS6029: Version 1.6.2
,当我运行make
时,我得到了生成的.js文件。
我在Ubuntu 16.04.6中得到以下错误:
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'typescript/tsc.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/usr/bin/tsc:2:1)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
运行:npm install -g typescript
没有解决这个问题。所以,我必须安装最新版本的节点,即nvm install <nvm version>
然后使用npm install
,它解决了这个问题。
有时,删除node_modules
并运行npm i
或yarn
可以解决问题。