vscode 中的未绑定断点用于在 docker 容器中调试 Nodejs 应用程序

Sho*_*v3_ 11 javascript node.js docker babeljs visual-studio-code

最小可重现仓库: https://github.com/ShocKwav3/babel-node-basic

我正在尝试使用 vscode 为 Nodejs 应用程序设置调试器。我正在运行该应用程序babel-node。无论我尝试什么,断点都显示未绑定。我正在使用此命令运行应用程序

nodemon --exec './node_modules/.bin/babel-node --inspect=0.0.0.0 src/bin/www'

Dockerfile:

FROM node:12
WORKDIR /usr/src/app/home_automation_server
COPY package*.json ./
RUN yarn install
COPY . .
Run Code Online (Sandbox Code Playgroud)

撰写配置:

server:
    image: home_automation_server
    volumes:
      - .:/usr/src/app/home_automation_server
    working_dir: /usr/src/app/home_automation_server
    ports:
      - 3000:3000
      - 9229:9229
    depends_on:
      - db
      - redis
    networks:
      - servernet
    env_file:
      - ./server.env
      - ./database.env
    command: ["sh", "entrypoint.sh", "run"]
    tty: true
Run Code Online (Sandbox Code Playgroud)

.babelrc:

{
  "presets": [
    [
      "@babel/preset-env",{
        "targets": {
          "node": "current"
        }
      }
    ]
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties",
    ["module-resolver", {
      "root": ["./"],
      "alias": {
        "projectRoot": "./",
        "src": "./src"
      }
    }]
  ],
  "sourceMaps": "inline"
}
Run Code Online (Sandbox Code Playgroud)

启动.json:

{
      "type": "node",
      "request": "attach",
      "name": "Debug: HA dev server",
      "port": 9229,
      "restart": true,
      "trace": true,
      "address": "localhost",
      "localRoot": "${workspaceFolder}/src/bin",
      "remoteRoot": "/usr/src/app/home_automation_server/src/bin",
      "protocol": "inspector",
      "sourceMaps": true
    }
Run Code Online (Sandbox Code Playgroud)

当我连接调试器时,它会连接如果我使用inspect-brk应用程序在第一行停止,当调试器连接时我可以单步执行。但是当我设置断点时它不起作用并且变灰。说“未绑定断点”我做错了什么?我已经在这方面工作了很长时间,并尝试了通过谷歌搜索可以找到的几乎所有内容。

rya*_*les 5

我对未绑定断点也有类似的问题。我的问题是 launch.json 中的字段不正确:

"localRoot": "${workspaceFolder}/server",
Run Code Online (Sandbox Code Playgroud)

我忘记包含 /server。我的 launch.json 文件回到了相对于我试图在标记为 /server 的目录中调试的 Nodejs 应用程序的一个目录。


小智 0

我遇到了类似的问题,问题出在 launch.json,我在属性中 "program": "app.ts",我更改为"program": "$ {file}"**. 我只能测试一下app.ts。在其他文件中,断点设置为“未绑定”这是我的 launch.json

    {

    "version": "0.2.0",
    "configurations": [
        {
            "type": "pwa-node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${file}",
            "sourceMaps": true,
            "preLaunchTask": "tsc: build - tsconfig.json",
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)