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 来运行 tscnode 或您提供的任何其他可执行文件。问题是tsc 不在您的PATH 中,因此您必须添加可执行文件的路径。 我们为什么要全局安装 typescript?那么我们的 npm 脚本就会有使用错误版本的 tsc 来编译的危险。我希望它始终使用项目本地的 tsc。 @pabrams 在过去的日子里,在 npm 中使用本地安装的二进制文件非常困难,并且 yarn 还没有发布。请记住,您评论的是 2.5 岁以上的答案。 现在使用 ts-nodetsc --init 和 VSCode 中的自动构建设置可以轻松 10 倍。【参考方案2】:

您也可以使用自动查看 .bin 文件夹的 npm。然后你可以使用 tsc

【讨论】:

这是什么意思?【参考方案3】:

在 VSCode 文件 tasks.json 中,"command": "tsc" 将尝试在它认为是您的模块文件夹的某个文件夹中查找 tsc windows 命令脚本。

如果您知道命令 npm install -g typescriptnpm 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_modulesnpm i

我的问题是我跑了rm -rf node_modules 大约一秒钟然后停止了它。然后我忘了它,我也跑了npm i。然后我得到了 tsc 无法识别的错误。所以我尝试运行npm i 以确保一切都是最新的,它说它是,它不是。

【讨论】:

以上是关于tsc 未被识别为内部或外部命令的主要内容,如果未能解决你的问题,请参考以下文章

CMD: '■m' 未被识别为内部或外部命令

npm 命令返回消息 -g' 未被识别为内部或外部命令

VS2012:'nmake' 未被识别为内部或外部命令

PHP:'java' 未被识别为内部或外部命令

我收到此错误“'npx' 未被识别为内部或外部命令,” [重复]

cat 未被识别为内部或外部命令