And*_*ler 6 mocha.js node.js typescript visual-studio-code ts-node
我已经开始使用 TypeScript 开发 Node/ExpreeJS 项目。\n我应该注意,我没有直接运行节点。我正在 Docker 中运行节点,但我没有看到任何原因表明这会成为问题。
\n\n我使用 vscode 作为编辑器,并尝试为 Mocha 测试配置调试启动配置。
\n\n我的启动配置是
\n\n{\n "type": "node",\n "request": "launch",\n "name": "SK - Mocha Tests",\n "cwd": "${workspaceRoot}",\n "runtimeExecutable": "make",\n "runtimeArgs": [\n "test-brk"\n ],\n "port": 9321,\n "console": "integratedTerminal",\n "internalConsoleOptions": "neverOpen",\n "protocol": "inspector",\n "sourceMaps": true,\n}\nRun Code Online (Sandbox Code Playgroud)\n\n该make test-brk命令只是映射到在容器内docker exec执行的命令。npm run test-brk
我的 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 并按预期运行测试。\n检查服务器已启动,vscode 调试器成功连接,如下面的输出所示。
$ cd /home/andrew/workspace/service-kit/sk-base-nodejs ; /usr/bin/make test-brk \n(docker exec node npm run test-brk)\n\n> sk-base-nodejs@0.0.1 test-brk /workspace\n> 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\n\nDebugger listening on ws://0.0.0.0:9321/d696c7a4-c4e1-4212-af85-ab1675856a7a\nFor help, see: https://nodejs.org/en/docs/inspector\nDebugger attached.\nHTTP server listening on port 8080\n\n\n Hello World\n \xe2\x9c\x93 should return 200 and Hello World\n\n\n 1 passing (34ms)\n\nWaiting for the debugger to disconnect...\nRun Code Online (Sandbox Code Playgroud)\n\n但是,断点没有被击中。\n我已在应用程序 TS 源和测试 TS 源中设置。\n当测试运行时,断点会变灰并显示
\n\n\n\n\n断点被忽略,因为未找到生成的代码(源映射问题?)
\n
我知道这是源 TS 和为测试执行的 JS 之间的源映射问题。 \n如上所述,我将 ts-node 与 Mocha 一起使用,似乎存在问题,因为 ts-node 不会生成源映射文件vscode 来读取。\n这在ts-node/issues/46中进行了描述,但是该问题没有解决方案。它最终链接到vscode-chrome-debug-core/issues/533,报告称该问题已在先前版本的 vscode 中修复。
\n\n还有vscode/issues/3144建议将 TS 测试转译为 JS,然后执行 JS.. 但这不允许调试源 TS。
\n\n我将非常感谢任何能够为我指明正确方向的意见。
\n我能够让它与以下启动配置一起工作:
{
"name": "Run Mocha",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
"args": [
"--no-timeouts",
"--require",
"ts-node/register",
"${workspaceRoot}/src/**/*.spec.ts"
],
"cwd": "${workspaceRoot}",
"protocol": "inspector"
}
Run Code Online (Sandbox Code Playgroud)
我还必须module按照commonjs我的设置tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
}
}
Run Code Online (Sandbox Code Playgroud)
进一步阅读
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |