VSCode终端中的 "Ctrl+点击跟随链接 "不能跳转到源文件,而是打开新的浏览器标签页

问题描述 投票:3回答:1

我用的是 Visual Studio代码 (1.40.1版),以在我的。Angular 8 筹办 KarmaJasmine 通过命令从其终端进行测试 ng test. 当测试失败时,我总能通过以下方式跳转到相关的源文件。Ctrl + click 在终端链接上,嵌入到堆栈跟踪中。从几天前开始,这个功能就不再工作了,而是打开了一个新的Chrome浏览器标签页。

enter image description here

我想,这个问题可能与最近更新的 npm 包。因此,我创建了一个全新的Angular 8项目(ng new),做了一个小小的改变。app.component.spec.ts 并开始 ng test. 不幸的是,同样的问题也出现在那里。完全卸载并重新安装VSCode也没有任何帮助。

有什么办法可以让我恢复原来的功能(跳转到源代码)?

包.json

{
  "name": "app",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~8.2.13",
    "@angular/common": "~8.2.13",
    "@angular/compiler": "~8.2.13",
    "@angular/core": "~8.2.13",
    "@angular/forms": "~8.2.13",
    "@angular/platform-browser": "~8.2.13",
    "@angular/platform-browser-dynamic": "~8.2.13",
    "@angular/router": "~8.2.13",
    "rxjs": "~6.4.0",
    "tslib": "^1.10.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.803.18",
    "@angular/cli": "~8.3.18",
    "@angular/compiler-cli": "~8.2.13",
    "@angular/language-service": "~8.2.13",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.5.3"
  }
}

Karma.config.js

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma')
    ],
    client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, './coverage/app'),
      reports: ['html', 'lcovonly', 'text-summary'],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    restartOnFileChange: true
  });
};
angular visual-studio-code karma-jasmine karma-runner
1个回答
1
投票

你Ctrl+点击并不能直接导航到文件,因为错误堆栈显示的是 http://localhost:9876/_karma_webpack_/src/app/app.component.spec.ts 而不是 src/app/app.component.spec.ts.

您可以使用在 本回答,其中包括指定一个 formatError 作用于 karma.conf.js 配置

 formatError: (msg) =>
  msg.replace(/http:\/\/localhost:9876\/_karma_webpack_\//g, '')

这样就会使业力使用上面的方法(完全消除了 http://localhost:9876/_karma_webpack_ 当格式化错误堆栈时,从堆栈跟踪中得到的信息)。

现在,至于为什么会发生这种情况,我不清楚。我检查了一个旧的Angular 7项目,其中有karma jasmine的旧的依赖关系......它像以前一样工作(即错误堆栈直接引用了在 src).

然后我把karma、jasmine、karma-jasmine、......升级到最新版本,仍然可以使用。

当我升级到angular 8的时候,我开始出现同样的问题。所以一定是有什么地方发生了变化,但我不知道是哪里发生了变化。


0
投票

在我的情况下,我快疯了,它从一天到另一天停止工作。通过研究,我发现VS应用了自动更新,并且禁用了一些Angular扩展,我不知道为什么?(我的情况是在开发一个angular 8应用时发生的)。

所以我的工作解决方案是去扩展,通过"@disabled "过滤,然后启用Angular--或者你的情况下的任何东西--扩展。


0
投票

打开VsCode,按F1键,搜索打开用户设置,点击打开用户设置,会出现一个窗口,搜索左边的终端,尝试将allowchords关闭为false。

enter image description here

如果你没有看到这个窗口,而是看到一个json。把:-

"terminal.integrated.allowChords": false
© www.soinside.com 2019 - 2024. All rights reserved.