首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"npx - version“在虚拟机中报告不同的TypeScript版本。

"npx - version“在虚拟机中报告不同的TypeScript版本。
EN

Stack Overflow用户
提问于 2019-03-13 09:16:20
回答 1查看 8.8K关注 0票数 5

我希望能够在我的主机+来宾操作系统上运行我的项目的npx tsc。但是来宾使用的是不同(旧的)版本的tsc --我不知道它是从哪里来的。

我的设置:

  • 主机操作系统: Windows 10
  • 客户操作系统: Debian 9
  • 我使用的是VirtualBox,客户正在使用VirtualBox的“共享文件夹”功能挂载主机的文件--因此它没有项目文件的单独副本--我的项目在任何时候都通过共享文件夹访问。
  • 我在主机或客户操作系统上都没有安装类型记录(npm -g) (要确认这一点,在npm -g ls typescript上运行host+guest显示为“空”,而单独运行"tsc“并不像预期的那样工作)。

我有一个带有TypeScript 3.3.3333的项目安装在带有NPM的项目中。

当我将cd 放到项目文件夹并运行:时,Windows主机操作系统上的

  • npm ls typescript我看到输出:typescript@3.3.3333 (如预期的)
  • npx tsc --version我看到输出:Version 3.3.3333 (如预期的)

当我将cd 放到项目文件夹并运行:时,Linux来宾操作系统中的

  • npm ls typescript我看到输出:typescript@3.3.3333 (如预期的)
  • 我看到的输出:(unexpected!) npx tsc --version

因此,我无法运行npx tsc来编译来宾内部的代码,因为它不支持一些新的tsconfig设置。

tsc 1.5.3版本从何而来,我该如何摆脱它?

或者,我是否可以在主机上运行其他NPM命令,将一个可用的tsc安装到对两个Windows+Linux都有效的项目中?

另外,上面的父文件夹()中没有一个我的项目的根有一个node_modules文件夹(当然,我的项目的根有它的node_modules子文件夹)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-13 09:39:44

TypeScript二进制文件之所以称为tsc,是因为它很短。当它没有全局安装时,npx无法知道tsc引用了用于typescript包的tsc二进制文件。npx tsc指的是 package

可以修复的一种方法是显式地指定包名:

代码语言:javascript
复制
npx -p typescript tsc

这里的实际问题是,该项目依赖于全局TypeScript安装。在项目依赖项中使用typescript编写项目并引用package.json NPM脚本中的本地安装是很常见的:

代码语言:javascript
复制
...
"scripts": {
  "build": "tsc"
},
"devDependencies": {
  "typescript": "~3.3.0"
"
...
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55138134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档