【发布时间】:2020-09-03 05:11:39
【问题描述】:
我已经开始在 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 命令只是映射到在容器内执行npm run test-brk 的docker exec 命令。
我的 package.json 包含 test-brk 的脚本定义
"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"
从 vscode 运行 SK - Mocha Tests 调试任务会启动 Mocha 并按预期运行测试。
检查服务器已启动,vscode 调试器成功连接,如下面的输出所示。
$ cd /home/andrew/workspace/service-kit/sk-base-nodejs ; /usr/bin/make test-brk
(docker exec node npm run test-brk)
> sk-base-nodejs@0.0.1 test-brk /workspace
> mocha --require source-map-support/register --require node_modules/ts-node/register --inspect-brk=0.0.0.0:9321 --debug-brk --exit test/**/*.spec.ts
Debugger listening on ws://0.0.0.0:9321/d696c7a4-c4e1-4212-af85-ab1675856a7a
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
HTTP server listening on port 8080
Hello World
✓ should return 200 and Hello World
1 passing (34ms)
Waiting for the debugger to disconnect...
但是没有命中断点。 我在应用程序 TS 源和测试 TS 源中都设置了。 当测试运行时,断点变灰并显示
断点被忽略,因为找不到生成的代码(源映射问题?)
我了解这是源 TS 和为测试执行的 JS 之间的源映射问题。 如上所述,我在 Mocha 中使用 ts-node 似乎有问题,因为 ts-node 不会生成源映射文件供 vscode 读取。 这在ts-node/issues/46 中有描述,但是该问题没有解决方案。它最终链接到vscode-chrome-debug-core/issues/533,据报道它已在先前版本的 vscode 中修复。
还有vscode/issues/3144建议将TS测试转译成JS然后执行JS..但这不允许调试源TS。
我将不胜感激任何可以为我指明正确方向的意见。
【问题讨论】:
-
通常需要运行
_mocha而不是mocha才能在其他上下文中进行调试
标签: node.js typescript visual-studio-code mocha.js ts-node