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

如何配置VSCode与Cloud Code远程调试Kubernetes中的TypeScript Node应用

可以通过VSCode Cloud Code远程调试Kubernetes中的TypeScript Node应用

核心问题分析

你之前能调试JS应用,但TS调试卡壳的原因有两个:

  1. 容器中仅包含编译后的JS文件,缺少原始TS源码与Source Map文件,调试器无法映射本地源码
  2. Node进程未开启远程调试模式,无法接收VSCode的调试连接

解决方案步骤

1. 修改Dockerfile,保留源码与调试所需文件

调整镜像构建逻辑,将原始TS源码、tsconfig.json以及编译生成的Source Map文件(dist目录下的.map文件)一并复制到生产镜像中,同时开启Node的远程调试端口:

FROM node:19-alpine as builder
WORKDIR /app
COPY package*.json ./
COPY tsconfig.json ./
RUN npm install
COPY . .
RUN npm run build # 生成带Source Map的JS文件

FROM node:19-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
# 复制编译产物、源码、配置文件
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/src ./src
COPY --from=builder /app/tsconfig.json ./tsconfig.json

EXPOSE 3000 9229 # 开放应用端口与调试端口9229
# 启动Node时开启远程调试模式,允许外部连接
CMD ["node", "--inspect=0.0.0.0:9229", "./dist/index.js"]

2. 配置Skaffold(确保调试端口转发)

在skaffold.yaml中添加端口转发规则,将容器的9229调试端口映射到本地:

portForward:
- resourceType: deployment
  resourceName: 你的应用Deployment名称
  port: 9229
  localPort: 9229

3. 更新launch.json的Cloud Code调试配置

在原有Kubernetes配置中添加debug字段,指定Node调试器类型、源码路径映射规则:

{
  "configurations": [
    {
      "name": "Kubernetes: Run/Debug",
      "type": "cloudcode.kubernetes",
      "request": "launch",
      "skaffoldConfig": "${workspaceFolder}\\skaffold.yaml",
      "watch": false,
      "cleanUp": false,
      "portForward": true,
      "imageRegistry": "zzz.common.repositories.zzz.zzz",
      "debug": {
        "debugger": "node",
        // 映射容器内源码路径到本地路径
        "sourceMapPathOverrides": {
          "/app/src/*": "${workspaceFolder}/lcs/src/*"
        },
        "port": 9229
      }
    },
    // 本地调试配置保留
    {
        "type": "node",
        "request": "launch",
        "name": "Local Debug",
        "runtimeExecutable": "node",
        "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],
        "args": ["${workspaceRoot}/lcs/src/index.ts"],
        "cwd": "${workspaceRoot}/lcs",
        "internalConsoleOptions": "openOnSessionStart",
        "env": { "NODE_ENV": "development" },
        "skipFiles": ["<node_internals>/**", "node_modules/**"]
      }
  ]
}

4. 验证调试流程

  1. 确认tsconfig.json中sourceMap已设为true
  2. 重新构建镜像并通过Cloud Code部署到Kubernetes
  3. 启动「Kubernetes: Run/Debug」配置,此时VSCode会自动连接到容器的调试端口,你可以直接在本地TS文件中设置断点进行调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:17:07