tsc 未被识别为内部或外部命令
Posted
技术标签:
【中文标题】tsc 未被识别为内部或外部命令【英文标题】:tsc is not recognized as internal or external command 【发布时间】:2016-05-24 00:14:23 【问题描述】:我从 VSCode 0.10.6 更新到 0.10.8,并第一次尝试使用 Typescript。不幸的是,当我告诉 VSCode 构建时,我得到了错误:
tsc 不是公认的内部或外部命令...
以下是相关细节:
我创建了一个新的“HelloWorld”项目according to VS Code instructions。这包括: 我运行npm init
获取新的 package.json
我运行 npm i --save-dev typescript
是因为我想要本地安装,而不是全局安装。
我创建了一个 launch.json 来定义一个 node.js 项目。
我创建了 tasks.json 文件,并为 tsc 指定了设置。
我已经创建了一个 settings.json 文件,as shown here。它没有帮助。
我确实安装了 Visual Studio 2015 Community,但我没有安装任何类型的 Typescript 扩展。当我在开发人员命令提示符下键入“where tsc”时,它会回复“找不到”。我认为这是一件好事。
我已经重新启动了 VSCode(多次)。我错过了什么?还需要做什么?
更新
我尝试了@zlumer 提供的解决方案。它成功地使 typescript 编译器运行,但随后导致出现数千个错误。为了解决这个问题,我还必须调整我的 tsconfig.json 以排除 node_modules 文件夹:
"exclude": [
"node_modules"
]
【问题讨论】:
【参考方案1】:问题是tsc
不在您的PATH
中(如果安装在本地)。
您应该修改您的.vscode/tasks.json
以包含tsc
的完整路径。
要更改的行可能等于"command": "tsc"
。
您应该将其更改为 "command": "node"
并将以下内容添加到您的参数中:"args": ["$workspaceRoot\\node_modules\\typescript\\bin\\tsc"]
(在 Windows 上)。
这将指示 VSCode:
-
运行 NodeJS(应该全局安装)。
将本地 Typescript 安装作为要运行的脚本传递。
(这几乎就是 tsc
可执行文件所做的)
您确定不想全局安装 Typescript 吗?它应该会让事情变得更容易,特别是如果你刚刚开始使用它。
【讨论】:
这行得通,但我不明白。Install TypeScript locally
项目符号中的 The documentation 没有提及您提到的调整。 Other documentation 说我只需要将 settings.json 文件调整为指向“包含 TypeScript tsserver.js 和相应的 lib.*.d.ts 文件的目录”。一旦我调整了我的 settings.json 以指示正确的路径,为什么我还需要调整 tasks.json 中的路径?
文档讨论了为 VSCode 安装 typescript。构建任务(tasks.json 中描述的那些)是完全不同的——它们只是使用 shell 来运行 tsc
、node
或您提供的任何其他可执行文件。问题是tsc
不在您的PATH
中,因此您必须添加可执行文件的路径。
我们为什么要全局安装 typescript?那么我们的 npm 脚本就会有使用错误版本的 tsc 来编译的危险。我希望它始终使用项目本地的 tsc。
@pabrams 在过去的日子里,在 npm 中使用本地安装的二进制文件非常困难,并且 yarn 还没有发布。请记住,您评论的是 2.5 岁以上的答案。
现在使用 ts-node
、tsc --init
和 VSCode 中的自动构建设置可以轻松 10 倍。【参考方案2】:
您也可以使用自动查看 .bin 文件夹的 npm。然后你可以使用 tsc
【讨论】:
这是什么意思?【参考方案3】:在 VSCode 文件 tasks.json
中,"command": "tsc"
将尝试在它认为是您的模块文件夹的某个文件夹中查找 tsc windows 命令脚本。
如果您知道命令 npm install -g typescript
或 npm install typescript
保存到的位置,我建议您替换:
"command": "tsc"
与
"command": "D:\\Projects\\TS\\Tutorial\\node_modules\\.bin\\tsc"
D:\\...\\bin
是包含我的 tsc windows 可执行文件的文件夹
将确定我的 vscode 现在本机指向的位置,以找到 tsc 并修复它。
【讨论】:
【参考方案4】:可能是Typescript
没有全局安装的原因,所以安装吧
npm install -g typescript // installs typescript globally
如果您想将.ts
文件转换为.js
,请根据需要进行操作
tsc path/file.ts // file.ts will be converted to file.js
tsc // all .ts files will be converted to .js files with in the directory
tsc --watch // converts all .ts files to .js, and watch changes in .ts files
【讨论】:
注意:您可以从 VSCode 的终端运行此命令(查看 > 命令面板,然后键入 javascript 调试终端)【参考方案5】:您错过了 typescript 安装,只需运行以下命令,然后尝试 tsc --init
npm install -g typescript
【讨论】:
【参考方案6】:我也面临同样的问题。使用 nodeJS 命令提示符而不是 windows 命令提示符。
第一步:执行npm install -g typescript
第二步:tsc filename.ts
新文件将创建与“.js”相同的名称和不同的扩展名
第三步:node filename.js
您可以在屏幕中看到输出。它对我有用。
【讨论】:
【参考方案7】:对于窗户
全局安装 typescript 后
npm install typescript -g
只需搜索“node.js 命令提示符”
输入命令提示符
tsc -v
在这里我们可以看到 tsc 命令有效,现在导航到您的文件夹并输入
tsc filename.ts
它符合 ts 到 js 文件。
【讨论】:
非常好!有效!尽管如此,我不明白 tsc 本身的问题是什么。我已经在全球范围内安装了 typescript,它应该可以在 VSCODE 终端中运行!【参考方案8】:对我来说,通过以管理员身份运行 Visual Studio Code,问题就解决了。
【讨论】:
【参考方案9】:你需要运行:
npx tsc
...而不是像其他人似乎建议的那样,像 Windows 命令一样调用 tsc
拥有它。
如果您没有安装npx
,那么您应该安装。它应该全局安装(与 Typescript 不同)。所以首先运行:
npm install -g npx
..然后运行npx tsc
。
【讨论】:
npx 附带 npm 起始版本5.2,因此您可能不需要单独安装。【参考方案10】:tsc 未被识别为内部或外部命令
正如另一个答案中提到的,这是因为路径中不存在 tsc。
1.安装为全局包
要使该用户的所有目录都可以使用 TypeScript 编译器,请运行以下命令:
npm install -g typescript
你会看到类似的东西
C:\Users\username\AppData\Roaming\npm\tsserver -> C:\Users\username\AppData\Roaming\npm\node_modules\typescript\bin\tsserver C:\Users\username\AppData\Roaming\npm\tsc -> C:\Users\username\AppData\Roaming\npm\node_modules\typescript\bin\tsc + 打字稿@3.6.3 在 4.769 秒内添加了来自 1 个贡献者的 1 个包
2.设置环境变量
将 npm 安装文件夹添加到您的“用户变量”中并且 “环境变量”。
在 windows 中你可以添加环境变量 PATH 的值
C:\Users\用户名\AppData\Roaming\npm\
即无论 npm 安装文件夹在哪里。
注意:如果存在多个路径,则使用 ;(分号)将它们分隔
如果下面的命令给出了版本,那么你已经成功安装了
tsc --version
【讨论】:
【参考方案11】:如果您想从集成终端运行 tsc 命令并在本地安装 TypeScript 模块,您可以将以下内容添加到您的 .vscode\settings.json 文件中。
"terminal.integrated.env.windows": "PATH": "$workspaceFolder\\node_modules\\.bin;$env:PATH"
这会将本地安装的节点模块的二进制/可执行目录(tsc.cmd 所在的位置)添加到 $env.PATH 变量中。
【讨论】:
【参考方案12】:此错误的另一种情况:
安装 typescript locally
并在没有npm run
的情况下运行命令
首先,重要的是要注意这是一个“一般”终端错误(即使你写了hello bla.js
-or- wowowowow index.js
):
“hello world”这个错误的例子:
-
您本地安装打字稿(没有
-g
)==> npm install typescript
。
https://docs.npmjs.com/downloading-and-installing-packages-locally
在这种情况下,如果您在本地项目中运行 npm run
,则可以使用 tsc
命令。例如:npm run tsc -v
:
-或-全局安装打字稿(就像其他答案提到的那样)。
相关问题:How to install and run Typescript locally in npm?
相关指南:https://code.visualstudio.com/docs/typescript/typescript-compiling
【讨论】:
【参考方案13】:如果以上都没有意义,特别是如果它以前可以工作。这是我的解决方案:rm -f node_modules
和 npm i
。
我的问题是我跑了rm -rf node_modules
大约一秒钟然后停止了它。然后我忘了它,我也跑了npm i
。然后我得到了 tsc 无法识别的错误。所以我尝试运行npm i
以确保一切都是最新的,它说它是,它不是。
【讨论】:
以上是关于tsc 未被识别为内部或外部命令的主要内容,如果未能解决你的问题,请参考以下文章