node.js – 调试mocha测试时,未触发Visual Studio代码中的断点

我正在使用Mocha(和Chai)进行NodeJS模块的单元测试,并希望在Visual Studio代码中对其进行调试.我在测试子文件夹中有一个TypeScript文件,有一些测试. VScode在out dir中生成.js和.map文件(通过tsc watch模式任务).我的tsconfig.json文件包含以下设置:

{
    "compilerOptions": {
        "compileOnSave": true,
        "module": "commonjs",
        "target": "es6",
        "outDir": "out",
        "removeComments": true,
        "noImplicitAny": true,
        "sourceMap": true,
        "inlineSources": true,
        "isolatedModules": false,
        "allowSyntheticDefaultImports": true,
        "experimentalDecorators": true
    },
    "include": [
        "src/**/*", "parser/**/*", "test/**/*"
    ],
    "exclude": [
        "node_modules",
        ".vscode-test"
    ]
}

并且out目录包含3个包含的3个子目录.到目前为止都很好.

我可以使用此命令运行我的测试:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

在vscode之外.然后我用–debug-brk开关运行这段代码并附加了vscode.这样可行,但没有断点. launch.json中的配置是:

    {
        "name": "Attach",
        "type": "node",
        "request": "attach",
        "port": 5858,
        "address": "localhost",
        "restart": false,
        "sourceMaps": true,
        "outDir": null,
        "localRoot": "${workspaceRoot}",
        "remoteRoot": null
    }

理想情况下,我想要一个运行配置,这样我就不需要手动运行mocha.通过这些设置,我至少可以运行测试:

    {
        "name": "Mocha",
        "type": "node",
        "request": "launch",
        "cwd": "${workspaceRoot}",
        "preLaunchTask": "tsc",
        "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
        "args": [ "--no-timeouts", "--colors", "${workspaceRoot}/out/test/**/*.js" ],
        "stopOnEntry": true,
        "runtimeExecutable": null,
        "env": {
           "NODE_ENV": "testing"
        }
        "sourceMaps": true
    }

但仍然没有打破断点.

要使两个方案中的至少一个有效,需要做什么?

更新:同时我偶然发现断点在添加调试器时开始工作;命令在测试代码中的某处,并在调试器上停止后设置至少一个新的断点;之后,此单个文件中的所有后续断点都按预期工作.看起来几乎像我的错误.

最佳答案
使用“协议”:“检查器”,在启动选项中帮助我继续一段时间,即使这有令人讨厌的副作用,测试过程在执行完所有后从未停止过.每次运行后我都必须杀死任务.所以我虽然我又试着找到问题但我成功了.解决方案很简单:将outfiles选项添加到启动选项中,否则vscode将在TS源文件夹中查找地图.通过增加:

        "outFiles": [
            "${workspaceRoot}/out/**/*.js"
        ],

一切都开始很好地运作了.如果vscode会因为缺少设置而打印出无法找到源地图的警告,那将非常有用.

转载注明原文:node.js – 调试mocha测试时,未触发Visual Studio代码中的断点 - 代码日志