我已经开始使用TypeScript开发Node / ExpreeJS项目。 我应该注意,我不是直接运行节点。我正在docker中运行节点,但是没有任何理由认为这将是一个问题。
我正在使用vscode作为编辑器,并尝试为Mocha测试配置调试启动配置。
我的启动配置是
{
"type": "node",
"request": "launch",
"name": "SK - Mocha Tests",
"cwd": "${workspaceRoot}",
"runtimeExecutable": "make",
"runtimeArgs": [
"test-brk"
],
"port": 9321,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"protocol": "inspector",
"sourceMaps": true,
}
make test-brk
命令仅映射到在容器内执行docker exec
的{{1}}命令。
我的package.json包含npm run test-brk
的脚本定义
test-brk
从vscode运行"test-brk": "mocha --require source-map-support/register --require node_modules/ts-node/register --inspect-brk=0.0.0.0:9222 --debug-brk --exit test/**/*.spec.ts"
调试任务将启动Mocha并按预期运行测试。
如下面的输出所示,检查服务器已启动,vscode调试器成功连接。
SK - Mocha Tests
但是没有遇到断点。 我已经设置了应用程序TS源和测试TS源。 测试运行时,断点显示为灰色并显示
断点被忽略,因为未找到生成的代码(源映射问题?)
我知道这是源TS和正在执行测试的JS之间的源映射问题。 如上所述,我将ts-node与Mocha一起使用似乎出现了问题,因为ts-node不会生成供vscode读取的源映射文件。 ts-node/issues/46中对此进行了描述,但是该问题没有解决方案。它最终链接到vscode-chrome-debug-core/issues/533,后者报告它在vscode的先前版本中已修复。
还有vscode/issues/3144建议将TS测试转换为JS然后执行JS ..但这不允许调试源TS。
如果能为我指出正确的方向,我将不胜感激。