我正在使用VS Code进行TypeScript / JavaScript开发。当我打开文件时,它会检查该文件是否有错误。问题是如果我正在重构(比如我将一些共享代码移动到新位置或更改名称),它就不会告诉我这个错误,直到我打开带有问题的文件。 ...所以如果我想进行大量的重构,我必须打开每个文件,只是为了让它扫描文件是否有错误。
如何让VS Code扫描整个项目的错误,而不必手动逐个打开每个文件?
答案 0 :(得分:16)
VS代码(v1.44)具有实验性功能,该功能允许在TS中使用project wide error reporting。试试看:
// put this line in settings.json
"typescript.tsserver.experimental.enableProjectDiagnostics": true
答案 1 :(得分:8)
想出来。请注意,此答案特定于TypeScript,这是我正在使用的。这是:
确保全局安装打字稿(我刚刚在本地安装了):
npm install -g typescript
然后在VS Code中按 Shift + Ctrl + B 。如果您没有设置任务运行器,它将询问您想要什么。我选择了typescript,tasks.json文件将如下所示:
{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"args": ["-p", "."],
"showOutput": "silent",
"problemMatcher": "$tsc"
}
然后按 Shift + Ctrl + B (或 Shift + Command 在macOS中+ B 将检查整个项目是否存在问题,并将在“问题”面板中报告。
答案 2 :(得分:4)
对于tasks.json
中的most recent version,这是正确的json,遵循1.14版中的弃用规定。将此创建为/.vscode/tasks.json
{
"version": "2.0.0",
"command": "tsc",
"type": "shell",
"args": [
"-p",
"."
],
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$tsc"
}
答案 3 :(得分:1)
在vs代码中打开项目后,打开vs代码终端并运行:
node_modules/.bin/tsc --noEmit
答案 4 :(得分:0)
如果您不想全局安装TypeScript,可以执行以下操作:
./package.json
。 --noEmit
表示编译器不会生成任何JavaScript文件。{
"scripts": {
"validate-typescript": "tsc --noEmit"
}
}
/.vscode/tasks.json
中的运行脚本。{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "validate-typescript",
"problemMatcher": [
"$tsc"
]
}
]
}
答案 5 :(得分:-1)
编辑:由于更新至1.52.0,因此不再起作用。而是将当前项目文件替换为您选择的文件...
===
我已经尝试了所有可以找到的解决方案,并且我认为可以肯定地说答案是:您不能 *
我发现最好的方法仍然是从技术上手动打开每个文件,但至少不是一个一个:
这太可怕了,我求某人证明我错了。
*我还没有找到一种可以手动打开文件的方法。每种方法-实验性vscode功能和tsc任务-都有其自身的缺点。 vscode功能显然是解决方案,但without a way to ignore node_modules, etc.使用起来太痛苦了。
答案 6 :(得分:-1)
更新。
我在下面的回答并没有回答最初的问题,但如果你像我一样发现这个线程在 VSCode 中搜索如何在项目范围内打开 // @ts-check
这样你就不需要添加 {{1 }} 到每个文件然后我下面的答案就是你所需要的。我已经搜索并搜索并一直将此线程作为我的最佳结果,所以希望这对其他人也有帮助
我使用的是 vscode 1.52.1 版,答案很简单,就在 vscode 网站上:
https://code.visualstudio.com/docs/nodejs/working-with-javascript#_type-checking-javascript
向下滚动到“使用 jsconfig 或 tsconfig”部分
在您的项目根目录中添加一个 jsconfig.json 并添加 // @ts-check
"checkJs": true
添加后可能需要重启vscode