调试器不会在生产代码断点处停止



我有nodejs模块,我通过运行jasmine-ts --config=spec/support/jasmine.json用jasmine ts[0.3.0]对其进行单元测试。

我的意图是运行一些单元测试,并在我正在测试的函数内部的断点处停止。不幸的是,调试器只在单元测试中停止,而在生产代码中不停止。

可能是什么问题

更多关于我尝试的信息。

  1. 在我的Intellij IDEA 2020.1中,对更改进行了Typescript重新编译。我可以识别出它的工作原理是正确的,因为当我更改生产代码中的一些typescript文件时,我可以在dist文件夹中的相应Javascript文件中看到更改
  2. 如果我运行我的模块,那么我也可以在断点处停止
  3. 奇怪的是,在使用mocha的另一个模块中执行单元测试时,我可以在生产代码中的断点处停止,并且运行方式如下:npx mocha -r ts-node/register test/**/*.test.ts

思考可能出了什么问题。

  1. 依赖项可能无法正确协同工作。我最近正在将库更新到最新版本,但注意到jasmine-ts需要的ts-node小于8,所以目前我的package.json中有以下版本:

    "devDependencies": {
    "jasmine": "3.3.1",
    "jasmine-ts": "^0.3.0",
    "ts-node": "7.0.1",
    "nyc": "^13.0.1",
    "typescript": "^3.8.3",
    "@types/jasmine": "^3.3.8",
    "jasmine-spec-reporter": "^4.2.0",
    "jasmine-reporters": "^2.3.2"
    }
    
  2. 源映射可能已损坏。我已经检查了一些*.js.map文件,看起来它们指向了正确的*.ts文件,所以,不知道该检查什么。

  3. 我在想排版配置是否也会产生影响,但我不清楚具体是如何影响的。不管怎样,这是我的tsconfig.json:

    {
    "compilerOptions": {
    "strict": false,
    "target": "es2015",
    "sourceMap": true,
    "module": "commonjs",
    "outDir": "./dist",
    "moduleResolution": "node"
    },
    "include": [
    "src/**/*.ts"
    ],
    "exclude": [
    "./spec/**/*.ts",
    "./node_modules/**/*.ts"
    ]
    }
    
  4. 肯定出了问题。当我想查看我使用nyc-npm测试运行的覆盖率时,我会看到Javascript文件,但它应该是Typescript。但我认为这可能是一个不同的问题,但可能不是。。。

有解决问题的提示吗?:(

更新:

解决此问题的一种方法是从Intellij IDEA和其他可能影响稳定工作的文件中清除代码,方法是将项目从计算机中完全删除并再次克隆。通过这个操作,它帮助我在使用jasmine的其他模块中的断点处停止,然而,当我进入生产代码时,我的模块仍然有奇怪的状态,但不是按顺序。我想我看到了一些关于承诺的错误,但我没有。

问题是我在语言&框架->Typescript

这带来的功能是,对于每个.ts文件,都将生成.js文件,但在我的情况下,所有js编译的文件都必须位于我在tsconfig文件中指定的dist目录中。我的假设是,在调试会话期间,调试器不知道要获取哪个文件,或者正在获取错误的文件。将重新编译设置为将更改为关闭解决了问题。

尽管我仍然有一些奇怪的行为,因为调试器比预期更早地到达生产代码,但我认为这是不同的情况,与Intellij IDEA偏好无关,而是与周期性运行任务的异步代码有关。

最新更新