如何让 VSCode 显示 *not* 在编辑器中打开的文件的 TypeScript 错误?

Posted

技术标签:

【中文标题】如何让 VSCode 显示 *not* 在编辑器中打开的文件的 TypeScript 错误?【英文标题】:How to get VSCode to show TypeScript errors for files *not* open in the editor? 【发布时间】:2019-08-07 15:27:50 【问题描述】:

在我的create-react-app@2.1.8 TypeScript/React 应用程序中,TS 编译器错误仅显示在我在 VS 代码编辑器中打开的文件的问题窗格中。因此,有时我在实际运行应用程序之前不会发现错误。

如何让 TypeScript 在我打开工作区或保存对文件的更改时自动检查所有代码文件中的编译器错误?

我尝试在package.json 中添加"watch": "tsc --watch" 作为脚本,然后在集成终端窗格中执行npm run-script watch,但这有两个问题:

错误显示在终端窗格中,但未填充 VSCode 中的“问题”窗格 我必须手动运行它,而不是在工作区加载时自动启动它

有没有更好的解决方案?

顺便说一句,这和Show project wide TypeScript problems/errors in webstorm 是同一个问题,但是关于 Visual Studio Code 而不是 webstorm。

【问题讨论】:

【参考方案1】:

截至 14.04.2020 普遍可用的 VS Code 中有一个实验性功能,可启用项目范围的问题报告。将以下内容添加到您的settings.json

"typescript.tsserver.experimental.enableProjectDiagnostics": true

它是实验性的,可能同时令人不知所措。

观看此space。

【讨论】:

对我有用的配置是"typescript.tsserver.experimental.enableProjectDiagnostics": true。该团队正在积极开展这项工作。 @DawsonB 谢谢你的信息,我已经更新了票 我添加了这个设置,重启 VS Code 但它没有显示任何问题? (虽然我有一些)【参考方案2】:

很遗憾,截至 2019 年 11 月,VS Code 不支持开箱即用。见https://github.com/Microsoft/vscode/issues/13953。

我能找到的最佳解决方法是向 tasks.json 添加一个将运行 tsc --watch 的任务,并将其配置为在工作区或文件夹打开时运行。

以下是 tasks.json 的示例配置。请注意,下面 sn-p 中的“www”是指您要检查的带有tsconfig.json 的文件夹。将其替换为您自己的文件夹的名称,相对于您的工作空间的根目录。


    "version": "2.0.0",
    "tasks": [
        
            "label": "tsc watch",
            "type": "shell",
            "command": "./node_modules/.bin/tsc",
            "isBackground": true,
            "args": ["--watch", "--noEmit", "--project", "www"],
            "group": 
                "kind": "build",
                "isDefault": true
            ,
            "presentation": 
                "reveal": "never",
                "echo": false,
                "focus": false,
                "panel": "dedicated"
            ,
            "problemMatcher": "$tsc-watch",
            "runOptions": 
                "runOn": "folderOpen"
            
        
    ]

请注意,默认情况下似乎未启用自动运行任务。要选择自动运行任务,请按照此处的说明进行操作:https://***.com/a/58866185/126352

此解决方案改编自@molinx 在上面链接的 GitHub 问题中的回答,并感谢@kumar303 在下面的评论进行了改进。

【讨论】:

添加了 1.30 版 "runOn": "folderOpen" code.visualstudio.com/updates/v1_30#_run-on-folder-open @kumar303,这是一个有用的改进!我相应地更新了我的答案。谢谢! 此功能之前是否正常工作,只是被新更新淘汰了? 我需要稍微更改任务以使其在 Windows "command": "call" 和 args 中的 tsc 路径(如 "args": ["node_modules/.bin/tsc", "--watch", "--noEmit", "--project", "www"],)中工作

以上是关于如何让 VSCode 显示 *not* 在编辑器中打开的文件的 TypeScript 错误?的主要内容,如果未能解决你的问题,请参考以下文章

怎么让vscode支持ES7特性

如何设置 VSCode 以内联显示打字稿错误

如何让VSCode同时打开(显示)多个项目

vscode如何在input里放图片

Mac下vscode使用Mac终端命令 zsh: command not found

如何开发一个vscode插件