VS Code未达到在Docker容器中运行的Node应用程序的断点

时间:2019-11-08 22:38:38

标签: node.js docker babeljs nodemon vscode-debugger

摘要

我正在docker容器中运行节点应用程序,无法使VS代码调试器达到断点。

Docker设置

docker容器公开端口5859。使用以下命令运行节点应用程序:

nodemon -L --watch src --exec babel-node src/server.js -- --inspect=0.0.0.0:5859 --nolazy

它报告调试器正在监听:

[nodemon] 1.19.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: /app/src/**/*
[nodemon] starting `babel-node src/server.js --inspect=0.0.0.0:5859 --nolazy`
Debugger listening on ws://0.0.0.0:5859/5939f6b6-5ade-4ce5-9694-7df5f5b8385b
For help, see: https://nodejs.org/en/docs/inspector

VS代码设置

当我在VS Code中启动调试配置文件时,它似乎已附加。以下是正在运行的Docker容器的日志行。 enter image description here 但是,设置断点时不会命中断点。这是通天塔节点的问题吗?有没有建议的途径来使节点调试与babel-node一起使用?

enter image description here

我的VS Code调试配置:

  {
        "type": "node",
        "request": "attach",
        "name": "Docker: GraphQL",
        "port": 5859,
        "protocol": "inspector",
        "restart": true,
        "remoteRoot": "/app",
        "localRoot": "${workspaceFolder}"
    }

1 个答案:

答案 0 :(得分:1)

我无法使其与nodemon一起使用,但是修改了.babelrc文件以包含内联源映射触发了VS代码以达到我设置的断点。我的.babelrc文件如下所示:

{
    "env": {
        "production": {
            "presets": [
                ["es2015", {"modules": false}],
                "stage-1"
            ]
        },
        "development": {
            "presets": [
                ["es2015"],
                "stage-1"
            ], 
            "sourceMaps": "inline",
            "retainLines": true
        }    }
}

以及docker在package.json中调用的相应脚本。端口5859在docker-compose文件中公开。

"start:docker": "babel-node src/server.js --inspect=0.0.0.0:5859 --nolazy",