Node.js &引用;npx tsc——版本;在虚拟机内报告不同的TypeScript版本
我希望能够在我的主机和来宾操作系统上对我的项目运行Node.js &引用;npx tsc——版本;在虚拟机内报告不同的TypeScript版本,node.js,typescript,npm,tsc,npx,Node.js,Typescript,Npm,Tsc,Npx,我希望能够在我的主机和来宾操作系统上对我的项目运行npx tsc。但是客人使用的是另一个(旧)版本的tsc——我不知道它来自哪里 我的设置: 主机操作系统:Windows 10 来宾操作系统:Debian9 我使用的是VirtualBox,来宾使用VirtualBox的“共享文件夹”功能装载主机的文件-因此它没有单独的项目文件副本-我的项目始终通过共享文件夹访问 我没有在主机或来宾操作系统上全局安装Typescript(npm-g)(为了确认这一点,在主机+来宾操作系统上运行npm-g ls
npx tsc
。但是客人使用的是另一个(旧)版本的tsc
——我不知道它来自哪里
我的设置:
- 主机操作系统:Windows 10
- 来宾操作系统:Debian9
- 我使用的是VirtualBox,来宾使用VirtualBox的“共享文件夹”功能装载主机的文件-因此它没有单独的项目文件副本-我的项目始终通过共享文件夹访问
- 我没有在主机或来宾操作系统上全局安装Typescript(npm-g)(为了确认这一点,在主机+来宾操作系统上运行
会显示“空”,并且单独运行“tsc”不会像预期的那样起作用)npm-g ls Typescript
cd
放入项目文件夹并运行时:
我看到输出:npm ls typescript
(如预期)typescript@3.3.3333
我看到输出:npx tsc--version
(如预期)version 3.3.3333
cd
放入项目文件夹并运行时:
我看到输出:npm ls typescript
(如预期)typescript@3.3.3333
我看到输出:npx tsc--version
(意外!)消息TS6029:version 1.5.3
npx tsc
在guest中编译代码,因为它不支持我的一些较新的tsconfig设置
这个TSC1.5.3版本从何而来,我如何摆脱它
或者,我是否可以在主机上运行其他NPM命令,将可用的tsc
安装到适用于Windows+Linux的项目中
此外,上面的父文件夹中没有一个
我的项目的根目录有一个node\u modules
文件夹(当然,我的项目的根目录有它的node\u modules子文件夹)。类型脚本二进制文件称为tsc
。当它不是全局安装时,npx
无法知道tsc
是指tsc
二进制的typescript
包<代码>npx tsc
指的是
解决此问题的一种方法是显式指定包名:
npx -p typescript tsc
这里的实际问题是项目依赖于全局TypeScript安装。通常会有typescript
项目是使用项目内依赖项编写的,并在package.json NPM脚本中引用本地安装:
...
"scripts": {
"build": "tsc"
},
"devDependencies": {
"typescript": "~3.3.0"
"
...
谢谢,npx-p typescript tsc似乎满足了我的需要,并且正确地报告了3.3.3333版。我很好奇旧的“tsc”软件包是如何运行的?因为我没有在项目中或全局安装它,而且字符串“tsc”甚至不存在于package.json或package-lock.json文件中的任何位置。节点_模块下也没有“tsc”文件夹。另外,npx tsc--version正在报告
消息TS6029:version 1.5.3
-哪个似乎不是“tsc”包的版本号?(它的版本号使用不同的格式)。我在主机或来宾文件系统的任何地方都找不到任何“tsc”包。npx是否临时下载副本并在运行或类似操作后将其删除?(当我运行它时,我看到一条消息npx:installed 1 in 1.998s
),或者“tsc”包文件可能来自哪里?是的,npx就是这样做的。它会安装一个临时副本。tsc的最新版本是1.20150623.0,而不是1.5.3,这意味着该软件包在内部使用不同的版本来显示-v
,而不是从package.json中获取。抱歉,但我不明白npx为什么不获取tsc的新版本?@MuradSofiyev它使用全局安装的TS,以防出现。如果您想让现有的-p typescript tsc表现不同,请使用npx——忽略现有的-p typescript tsc
。