【问题标题】:Version mismatch between tsc compiler and VS Code's language servicetsc 编译器和 VS Code 的语言服务之间的版本不匹配
【发布时间】:2017-01-23 02:55:53
【问题描述】:

我刚开始使用 Visual Studio Code,当我创建了一个名为 index.html 的新文件时,我看到了这条警告消息

全局安装的 tsc 编译器 (1.0.3.0) 和 VS Code 的语言服务 (1.8.10) 之间的版本不匹配

有人可以指导我如何解决这个问题。

这是严重的还是我可以忽略。我用谷歌搜索但无法获得太多信息

谢谢

【问题讨论】:

标签: visual-studio-code


【解决方案1】:

如果您并不真正关心您使用的 tsdk 版本,您可以删除“typescript.tsdk”并使用嵌入在代码中的那个。

【讨论】:

    【解决方案2】:

    你会认为这是微软的产品,他们会在他们的网站上提供 Windows 路径

    https://code.visualstudio.com/docs/languages/typescript#_using-newer-typescript-versions

    但他们没有。它们只给出 Unix 路径类型。 采用:- 在 Windows 上:“typescript.tsdk”:“C:/Users/YourNameHere/AppData/Roaming/npm/node_modules/typescript/lib/”

    请注意,即使 Windows 使用反向笔划作为路径,也必须使用正向笔划!

    其他一些答案错过了最后一次必要的向前冲程。

    【讨论】:

    • 在 Windows 上,使用转义的反斜杠作为路径:"C:\\Users\\YourNameHere\\AppData\\...
    • 对不起,伙计,但投了反对票,因为这似乎不是一个答案,而是一个评论。如果您的意思是它是一个答案,那么它似乎与问题无关。也许您可以对其进行编辑以更清楚地了解路径和路径格式如何解决此问题或将其删除并将其作为注释放在它所属的位置。到时候我会投票。 :)
    • @AlexRebula 我不允许对其他用户的答案做出任何 cmets,而且我被否决的次数越多,这种可能性就越大。
    • 嘿昆汀。如果是这样的话,你有一个观点。 :) 我试着投票支持它,但它说既然我已经投票了,你的答案必须先编辑。见prntscr.com/g16eai
    • 也许稍微修改一下,我就会投回我的一票给你。干杯。
    【解决方案3】:

    以上解决方案都不适合我 - 首先这是我想要更新到最新版本的全局 tsc。

    我做了一些调查后发现问题出在系统的 PATH 变量上; tsc.cmd(连同 tscserver.cmd)存在于这些位置:

    • c:\Program Files\nodejs - npm.exe 和 node.exe 所在的位置
    • %USERPROFILE%\AppData\Roaming\npm - 全局包所在的位置

    您可以做的是调整环境\用户变量,以便 tsc 命令首先从 %USERPROFILE% 而不是 Program Files 解析>.

    快速而肮脏的方法是从 Program Files 路径中删除 tsc.cmdtscserver.cmd

    【讨论】:

      【解决方案4】:

      我遇到此问题的原因(在 Mac OS X 10.12.2 上的 VSCode 1.8 中)是我一直在使用 NVM,当我的代码在 NVM 版本上运行时,VSCode 正在查看节点的系统安装.

      仔细检查您使用哪个 npm 安装来全局安装 typescript。如果有疑问(在 linux/mac 上),请从命令行使用 which tsc 来验证 VSCode 使用的位置。

      例如,如果我只是调用npm i -g typescriptnpm 会解析为~/.nvm/versions/node/v6.9.1/bin/npm。我必须通过显式调用/usr/local/bin/npm i -g typescript 来解决问题,因为VSCode 默认在/usr/local/bin/node 中查找节点。

      【讨论】:

        【解决方案5】:

        之所以生成此错误,是因为我在系统路径变量中引用了较旧的 TypeScript 安装:

        C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\
        

        删除此条目后,Visual Studio Code 错误已解决。

        但是,我的 TypeScript 文件随后无法转换,因为构建操作找不到 tsc.exe 文件。

        安装 SDK 时(通过 Visual Studio 或通过手动安装 *.visx),将安装 tsc.exe 文件并更新 PATH 环境变量以引用该文件所在的文件夹(见上文)。

        还有另一种使用 node.js 在 Windows 环境中转换文件的方法:

        • 安装 node.js。安装包可以在here找到。
        • 使用 npm 安装 TypeScript:

          npm install -g typescript

          这会将 TypeScript 文件添加到您的个人资料 AppData 文件夹中:

          C:\Users\{your_user_name}\AppData\Roaming\npm\node_modules\typescript\lib

        • 配置您的 Visual Studio Code 用户 settings.json 文件以引用此文件夹:

          { "typescript.tsdk": "C:\\Users\\{your_user_name}\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib" }
        • 添加/更新用户 PATH 环境变量以引用包含tsc.cmd 文件的文件夹:

          %USERPROFILE%\AppData\Roaming\npm

        【讨论】:

          【解决方案6】:

          安装 v2.0.3 的 typescript 是不够的...但是随后更新对 package.json 的版本依赖对我有用。

          npm 命令:

          npm install -g typescript@2.0.3
          

          package.json 上的更新行:

          "typescript": "^2.0.3"
          

          【讨论】:

            【解决方案7】:

            安装 VSCode 1.6.0 为我修复了 TypeScript 版本不匹配警告消息。

            【讨论】:

              【解决方案8】:

              [更新]VS Code 1.6 now ships with TypeScript 2.0.3.

              我刚刚安装了最新的 Typescript,目前是 v.2.0.3,并在 macOS Sierra 上安装了 VS Code v.1.5.3。出于某种原因,完全遵循官方文档对我不起作用。

              我是这样工作的:

              全局安装最新版本后: npm i -g typescript,我在我的settings.json 文件中添加了以下行(由cmd + , 打开):

              "typescript.tsdk": "/usr/local/lib/node_modules/typescript/lib",

              希望这对其他人有所帮助。

              [update] 正如@ptpaterson 在下面的评论中提到的那样,在 Windows 上的路径是:"typescript.tsdk": "C:/Users/{user_name}/AppData/Roaming/npm/node_modules/typescript/lib/"

              【讨论】:

              • "typescript.tsdk": "C:/Users/{user_name}/AppData/Roaming/npm/node_modules/typescript/lib/" 在 Windows 上为我服务。但这正是我所需要的。
              • 感谢@ptpaterson。我将此信息添加到答案中。
              • @rafaelbiten 您的 Windows 路径中有两个隐藏字符。 /types^^cript/lib 。请删除它们
              • @AbuAbdullah 刚刚删除了隐藏的空格。谢谢!
              【解决方案9】:

              我将此添加到我的settings.json 文件中,通过preferences > Workspace Settings 访问:

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

              现在我不再收到此错误,并且在屏幕的右下角显示我已安装的当前版本的 Typescript。

              【讨论】:

              • 这是 Windows 上的正确答案(不需要长显式路径)
              • 文件 > 首选项 > 工作区设置(感谢code.visualstudio.com/Docs/customization/userandworkspace
              • 在 Windows 上,当我使用 "typescript.tsdk": "node_modules/typescript/lib" 时,我收到警告 The path c:\temp\typescript\code\node_modules\typescript\lib doesn't point to a valid tsserver install. Falling back to bundled TypeScript version. 我必须使用完整路径。 "typescript.tsdk": "C:\\Users\\wekel\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib"我正在使用 VS Code 1.9.1。
              【解决方案10】:

              全局安装 TypeScript 以跨工作区共享安装。在这种情况下,您使用npm install -g typescript@next 安装它。

              然后您必须使用 typescript.tsdk 设置告诉 VS Code 在 setting.json 文件 (File -> Preferences -> Workspace Settings) 上的安装位置。将 typescript.tsdk 设置为包含已安装 TypeScript 模块的 tsserver.js 文件的 lib 文件夹的路径。

              在窗户上: "typescript.tsdk": "C:/Users/<MyUser>/AppData/Roaming/npm/node_modules/typescript/lib"

              在 Mac 上: "typescript.tsdk": "/usr/local/lib/node_modules/typescript/lib"

              【讨论】:

                【解决方案11】:

                您必须更改 Visual Code 使用的 TypeScript 版本以匹配您已安装的版本:

                https://code.visualstudio.com/docs/languages/typescript#_using-newer-typescript-versions

                以上摘自链接:

                如果您想使用较新版本的 TypeScript,您可以定义 typescript.tsdk 设置(文件 > 首选项 > 用户/工作区设置)指向包含 TypeScript tsserver.js 文件的目录。

                可以使用npm list typescript找到安装位置,tsserver.js一般在lib文件夹下。

                例如:

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

                【讨论】:

                  【解决方案12】:

                  之后您必须更新您的 Typescript 安装并重新启动代码:

                  npm install -g typescript
                  

                  npm install -g typescript@1.8.10
                  

                  如果有效,则该消息不应再出现。

                  【讨论】:

                  • 我没有工作。我不得不通过单击不再检查来隐藏消息。
                  猜你喜欢
                  • 2017-09-26
                  • 2016-07-01
                  • 1970-01-01
                  • 2014-05-13
                  • 1970-01-01
                  • 2015-06-26
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-06-12
                  相关资源
                  最近更新 更多