You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:VS Code调试Angular/TypeScript应用时断点无法触发

调试Docker中Node.js/TypeScript应用断点未命中的解决办法

核心问题分析

你的配置存在几个关键问题,导致VS Code无法正确映射本地TypeScript源码与容器内编译后的JS文件,进而断点失效。

具体修复步骤

1. 修正launch.json路径与源码映射配置

Windows路径转义错误,同时需明确开启源码映射并指定文件匹配规则:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug node",
      "port": 9229,
      "request": "attach",
      "skipFiles": ["<node_internals>/**"],
      // 修正路径转义,统一使用正斜杠
      "localRoot": "${workspaceFolder}/.dist",
      "remoteRoot": "/usr/src/api/.dist",
      "type": "node",
      // 强制启用源码映射
      "sourceMaps": true,
      // 指定编译后JS文件的位置,帮助调试器关联TS源码
      "outFiles": ["${workspaceFolder}/.dist/**/*.js"]
    }
  ]
}

2. 确保TypeScript编译生成源码映射

检查项目根目录的tsconfig.json,必须开启sourceMap选项:

{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": ".dist",
    // 其他编译配置...
  }
}

3. 调整nodemon监听逻辑

当前nodemon监听编译后的.dist目录,应改为监听TS源码目录,确保代码变更后自动重新编译并重启调试进程:
修改scripts/package.json的脚本:

{
  "scripts": {
    // 监听TS源码目录,变更时先编译再启动调试
    "watch": "nodemon --watch '/usr/src/api/src/**/*.ts' -e ts -x 'npm run build && npm run debug'",
    "debug": "node --inspect=0.0.0.0:9229 /usr/src/api/.dist/start.js",
    // 新增build脚本,确保编译时生成sourceMap
    "build": "tsc"
  }
}

4. 验证Docker容器的文件挂载配置

确保本地源码与编译目录正确挂载到容器,补充docker-compose.yml的volume配置:

services:
  your-service:
    # 其他配置...
    ports:
      - 4002:8800
      - 9229:9229
    volumes:
      # 挂载本地TS源码目录到容器
      - ./src:/usr/src/api/src
      # 挂载本地编译目录到容器
      - ./.dist:/usr/src/api/.dist
      # 挂载编译配置文件,确保容器内编译规则与本地一致
      - ./tsconfig.json:/usr/src/api/tsconfig.json

5. 断点设置注意事项

  • 仅在本地TypeScript源码上设置断点,无需在.dist目录的JS文件上设置
  • 确保断点设置在实际会执行的代码行(避免空行、注释或未被调用的函数)

验证流程

  1. 停止当前运行的容器,重新执行npm run docker启动服务
  2. 在VS Code中启动"Debug node"调试配置
  3. 触发对应业务逻辑,检查断点是否命中

内容的提问来源于stack exchange,提问作者gib65

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:55:17