我希望能够在主机+来宾操作系统上的项目上运行npx tsc
。但是来宾使用的是tsc
的其他(较旧)版本-我不确定它的来源。
我的设置:
npm -g ls typescript
时显示为“空”,而单独运行“ tsc”则不会不能正常工作。我有一个带有TypeScript 3.3.3333的项目,并已安装到带有NPM的项目中。
在Windows主机操作系统上,当我cd
进入项目文件夹并运行时:
npm ls typescript
我看到输出:typescript@3.3.3333
(按预期)npx tsc --version
我看到输出:Version 3.3.3333
(按预期) 在Linux客户操作系统中,当我cd
进入项目文件夹并运行时:
npm ls typescript
我看到输出:typescript@3.3.3333
(按预期)npx tsc --version
我看到输出:message TS6029: Version 1.5.3
(意外!)因此,由于它不支持某些较新的tsconfig设置,因此无法运行npx tsc
在来宾内部编译代码。
此tsc 1.5.3版本从何而来,我如何摆脱它?
或者我可以在主机上运行一些替代的NPM命令,以将可用的tsc
安装到适用于Windows + Linux的项目中吗?
此外,我项目的根目录 以上 都没有一个父文件夹(但是,我项目的根目录确实具有其node_modules子文件夹)。
答案 0 :(得分:2)
为简短起见,TypeScript二进制文件称为tsc
。如果未全局安装,则npx
无法知道tsc
是指tsc
软件包的typescript
二进制文件。 npx tsc
是指deprecated tsc
package。
解决此问题的一种方法是显式指定软件包名称:
npx -p typescript tsc
这里的实际问题是该项目依赖于全局TypeScript安装。在项目依赖项中编写typescript
项目是很常见的,并在package.json NPM脚本中引用本地安装:
...
"scripts": {
"build": "tsc"
},
"devDependencies": {
"typescript": "~3.3.0"
"
...