Visual Studio Code (vscode) - Angular - 无法从问题中打开文件(单击问题链接会重定向到错误的路径)

Sim*_*mon 6 compiler-errors typescript visual-studio-code angular

编码上下文:

  • Angular:v15(13 上有同样的错误)
  • NodeJS :v18.10(也尝试过 v16.18)
  • NPM:v8.10.0
  • VSCode:1.73.1

问题:

当我的 Angular/TypeScript 代码中存在语法错误时,VisualCode 会在“问题”选项卡中显示我的错误,但如果我单击该错误,则会出现错误。

错误是:“无法打开编辑器,因为找不到文件”。

错误:无法打开编辑器,因为找不到文件

调查(如果有帮助):当我仔细观察时,Visual Studio 尝试打开的链接是错误的:

而不是打开文件 C:\Users\simon\sandbox\learnRxJS2\src\app\app.component.ts

它正在尝试打开:C:\Users\simon\sandbox\learnRxJS2\Error: src\app\app.component.ts

在“工作空间”和“相对路径”之间插入了“错误:”。

3个场景的详细信息:

A - 编辑器在初始运行之前打开 在 打开包含我的错误的文件之前,没有显示错误(没有“问题”)。

当我手动打开编辑器[单击文件资源管理器中的文件]时: 错误显示正确

如果我关闭编辑器窗口,错误将从问题选项卡中消失。没关系,也许这是一个线索..

B - 编辑器关闭,尝试运行项目后 如果我从编辑器关闭 app.component.ts 文件,我的代码中不再报告“问题”。

然后我只需运行 Angular (f5) => 它将失败并在“问题”选项卡中显示我的错误。

这就是我无法点击链接的地方: Visual Studio 代码显示错误

C - 编辑器在尝试运行项目后打开

最后,如果我手动打开错误文件(使用文件资源管理器),错误将显示 2 次!如果我单击“新”问题,编辑器将找到该代码行。如果我点击另一个,错误“Cnanot fin file”将再次出现! 在此输入图像描述

这是一个面临同样问题的人,但使用 VSCODE + SalesForce :https ://salesforce.stackexchange.com/questions/377152/problems-are-returning-errors-linking-to-in Correct-file-locations-giving-the -e

yur*_*zui 1

标准预定义的 $tsc 模式无法匹配ng build输出命令(他们在某个时刻更改了该输出)。

看起来像:

{
  "name": "tsc",
  "regexp": "^([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",
  "file": 1,
  "line": 2,
  "column": 3,
  "severity": 4,
  "code": 5,
  "message": 6
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如你所看到的,它只是一个正则表达式。这就是为什么它需要Error: src/app/app.component.ts作为文件路径。


要解决此问题,您可以选择在该单词前面添加前缀Error

因此,转到.vscode/tasks.json并将所有"pattern": "$tsc",位置替换为:

"pattern": {
  "regexp": "^(Error: )?([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",
  "file": 2,
  "line": 3,
  "column": 4,
  "severity": 5,
  "code": 6,
  "message": 7
},
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

github 中也有类似的报告问题https://github.com/angular/vscode-ng-language-service/issues/625#issuecomment-801327945

也可以看看: