Visual Studio Code 忽略打字稿版本设置

Posted

技术标签:

【中文标题】Visual Studio Code 忽略打字稿版本设置【英文标题】:Visual Studio Code ignores typescript version settings 【发布时间】:2017-05-21 14:22:06 【问题描述】:

我无法让 Visual Studio Code 更新它正在运行的打字稿版本。

我已经详细阅读了this question的答案。

我已尝试将我的用户设置设置为:


    "typescript.tsdk": "C:\\Users\\myUser\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib"

这没有帮助。

我也尝试将我的工作区设置设置为:


    "typescript.tsdk": "./node_modules/typescript/lib"

这似乎也没有效果。

我将任务运行器配置为运行 tasks.json 并将其设置为以下内容:


    "version": "0.1.0",
    "command": "tsc",
    "args": ["-v"],
    "echoCommand": true

这将使用 -v 命令调用 tsc(以输出版本)。

当我按下 ctrl+shift+B 时,输出显示

运行命令> tsc -v 版本 1.8.34

我还需要做些什么来让 Visual Studio Code 更新其 Typescript 版本吗?

注意:我去了上面尝试过的两条路径,并在 bin 文件夹中执行了 tsc -v 并且都返回了 2.1.4

注意二:我已经尝试过多次重启 Visual Studio Code。

注意 III:当我从 C: 的命令提示符运行 tsc -v 时,它会输出 2.1.4

我正在运行 Visual Studio Code 1.8.1

更新:

我将 tasks.json 更改为运行 where tsc,这是输出:

运行命令> where tsc C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.js C:\Users\myUser\AppData\Roaming\npm\tsc C:\Users\myUser\AppData\Roaming\npm\tsc.cmd

所以我可以看到它从哪里获得旧版本的打字稿,但我不明白为什么它不使用“覆盖”版本。

我唯一的猜测是覆盖不适用于构建。它仅适用于智能感知等。 不过,我需要一种方法来改变这一点……

【问题讨论】:

【参考方案1】:

我致力于 VSCode 中的 TypeScript 和 javascript 支持。

typescript.tsdk 设置用于 IntelliSense 的 VSCode 中使用的 TypeScript 版本。它不会影响用于运行任务的tsc 版本。任务使用与命令行相同的逻辑来解析tsc

要在任务中使用 tsc 的本地副本,请将 task.json 更改为:


    "version": "0.1.0",
    "command": "./node_modules/.bin/tsc",
    "args": ["-v"],
    "echoCommand": true

或者,在 Windows 上:


    "version": "0.1.0",
    "command": ".\\node_modules\\.bin\\tsc.cmd",
    "args": ["-v"],
    "echoCommand": true

希望这有助于解决问题。请let us know,如果有任何想法可以使文档更清晰,或者您甚至可以submit a PR to improve the docs。

【讨论】:

非常感谢您的回答!我曾尝试过类似的东西,但无法让它工作。当我输入你的建议时,我得到了一个错误。将isShellCommand 添加为 true 给了我错误消息:'。'不被识别为内部或外部命令、可运行程序或批处理文件。我试图取出前导的“。” (和其他一些组合)但我无法让它工作。 既然你是windows,你必须使用windows风格的路径:.\\node_modules\\.bin\\tsc.cmd。我也更新了答案以显示这一点。 就是这样!非常感谢! 我正在使用 VSCode,我不再能够切换 Typescript 版本。我在右下角的工具栏中没有看到当前版本,也没有看到 Typescript 版本的菜单。我失去了所有的智能。试图降级到 VSCode 的 1.3 版本,但看到完全相同的行为。我试图谷歌这导致我设置 typescript.tsdk 但无济于事! @MattBierner 你知道为什么会这样吗? 听起来内置的JavaScript and TypeScript language features 扩展被禁用了。在扩展视图中,搜索 @builtin 以确保它已启用

以上是关于Visual Studio Code 忽略打字稿版本设置的主要内容,如果未能解决你的问题,请参考以下文章

React 本机流程、打字稿和 Visual Studio Code

Visual Studio Code 中的打字稿是不是有自动导入功能?

如何让 Visual Studio Code linter 忽略一行?

是否可以使用 Visual Studio Code 的 linter 忽略特定警告?

Visual Studio Code WSL Remote - 忽略 Cwd 的 WSL 终端

如何在 Visual Studio Code 1.5.2 中设置 jsx 语法高亮和 Intellisense?