我希望能够在我的主机+客户操作系统上运行npx tsc
。但客人正在使用不同(较旧)版本的tsc
- 我不知道它来自哪里。
我的设置:
npm -g ls typescript
,并且单独运行“tsc”不起作用,如预期的那样)。我有一个使用NPM安装到项目中的TypeScript 3.3.3333项目。
在Windows主机操作系统上,当我cd
到项目文件夹并运行时:
npm ls typescript
我看到输出:[email protected]
(如预期的那样)npx tsc --version
我看到输出:Version 3.3.3333
(如预期的那样)在Linux客户操作系统内部,当我cd
到项目文件夹并运行时:
npm ls typescript
我看到输出:[email protected]
(如预期的那样)npx tsc --version
我看到输出:message TS6029: Version 1.5.3
(意外!)因此,我无法运行npx tsc
来编译guest虚拟机中的代码,因为它不支持我的一些较新的tsconfig设置。
这个tsc 1.5.3版本可以来自何处,我该如何摆脱它?
或者是否有一些替代的NPM命令我可以在主机上运行,它将一个可用的tsc
安装到适用于Windows + Linux的项目中?
此外,我项目的根目录上方的父文件夹都没有node_modules
文件夹(但当然我的项目的根目录确实有其node_modules子文件夹)。
为简洁起见,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"
"
...