“npx tsc --version”报告虚拟机内的不同TypeScript版本

问题描述 投票:1回答:1

我希望能够在我的主机+客户操作系统上运行npx tsc。但客人正在使用不同(较旧)版本的tsc - 我不知道它来自哪里。

我的设置:

  • 成本AS:Oindo 10
  • 客户操作系统:Debian 9
  • 我正在使用VirtualBox,并且guest虚拟机使用VirtualBox的“共享文件夹”功能安装主机文件 - 因此它没有项目文件的单独副本 - 我的项目始终通过共享文件夹访问。
  • 我没有在主机或客户操作系统上全局安装Typescript(npm -g)(为了确认这一点,在主机+客户机上显示“空”运行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子文件夹)。

node.js typescript npm tsc npx
1个回答
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"
"
...
© www.soinside.com 2019 - 2024. All rights reserved.