在 VS Code 中调试在 Docker 中运行的 Node Typescript 应用程序

2023-12-03

我正在 Docker 中运行一个 Node 应用程序,docker-compose。我使用 Traefik 作为代理。 我希望能够在 VS Code 中调试它,但我无法连接到我的应用程序:

connect ECONNREFUSED 127.0.0.1:9229

这是我的文件:

docker-compose.yml:

version: '3'

services:
    traefik:
        image: traefik:1.7
        command: --docker --docker.exposedbydefault=false
        ports:
            - '80:80'
            - 9229:9229
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock

    core:
        image: node:alpine
        labels:
            - traefik.enable=true
            - traefik.port=4001
            - traefik.backend=core
            - traefik.frontend.rule=Host:core.localhost
        volumes:
            - ./leav_core:/app
        working_dir: /app
        command: [sh, -c, 'npm start']
        expose:
            - '9229'

volumes:
    arango_data:
        driver: local

实际执行的命令是npm start is:

ts-node --inspect=0.0.0.0:9229 --type-check src/`

VSCode 中的调试设置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Docker: Attach to Node",
            "type": "node",
            "request": "attach",
            "remoteRoot": "/app"
        }
    ]
}

我使用 Traefik 上定义的 URL 访问我的应用程序http://core.localhost但我不知道如何将调试器附加到它

Thanks!


我的方法并不好,因为 VS Code 中有一个很棒的工具,称为“远程开发”。它是一个允许您直接在 VS Code 中附加容器的扩展。

首先,我必须更改启动节点应用程序的方式以启用检查。由于 ts-node 不支持inspect选项,你必须使用这个:

node --inspect=0.0.0.0:9229 -r ts-node/register src/

然后,使用远程开发进入您的容器。 进入内部后,您可以像通常在“经典”节点环境中一样调试应用程序。就我个人而言,我在中使用了这些设置launch.json:

{
    "type": "node",
    "request": "attach",
    "name": "Attach",
    "port": 9229,
    "skipFiles": [
        "<node_internals>/**",
        "node_modules/**"
    ]
}

一切正常,我的断点被正确命中,并且可以有效地调试我的应用程序:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VS Code 中调试在 Docker 中运行的 Node Typescript 应用程序 的相关文章

随机推荐

  • 使用 Azure ACS 2.0 保护 WCF 4.5 服务 [重复]

    这个问题在这里已经有答案了 如何使用 Azure ACS 2 0 保护我的 WCF 4 5 服务 这是一个基本教程 具有联合身份验证的 WCF SOAP 服务然后您可以在此处查看 Dominick Baier 和 Brock Allen 的
  • 无法在 AFNetworking 2 中使用自签名证书

    我将 Apache Server 使用的 cer 证书放在 Xcode 项目中 当应用程序尝试与服务器通信时 我在 Xcode 中收到此错误 Assertion failure in id AFPublicKeyForCertificate
  • GTLServiceYouTubeexecuteQuery 回调未调用

    GTL服务YouTubeexecuteQuery当我在后台线程中执行回调时 不会调用回调 视频不会上传 当我在主线程中执行它时 它工作正常 我得到回调并且视频也上传 我可以通过强制解决这个问题executeQuery在主线程中运行 但这会影
  • 何时引发 HttpStatusCodeException 异常?

    当我使用下面的代码时 会得到什么情况HttpStatusCodeException例外 ResponseEntity response restTemplate exchange builder build encode toUri Htt
  • CSS 动画适用于 Chrome,但不适用于 Safari

    我不明白这是怎么回事 我正在更新一个仍然使用选取框标签的网站 因此我用更平滑的 尽管仍然是选取框 CSS 动画替换 问题是它在 chrome 和 firefox 中工作正常 但在 safari 中不一致 有时加载 有时不加载 通过网站上的链
  • Linux 中的 PATH 环境变量

    我想知道Linux操作系统给出的标准环境变量 如PATH HOME 是如何自动设置的 这些是从哪些文件读取的 当特定用户登录时 应该有一些文件可以设置这些变量 我想在 cnicutar 已经提到的内容上添加更多细节 环境变量包括PATH c
  • 如何为嵌套状态创建 redux-persist 黑名单?

    这是我的代码persistConfig and store 我想补充一下blacklist for tracking 但不适用于所有跟踪状态 而仅适用于tracking checkingOut tracking checkingIn and
  • 具有清单版本 2 的 CORS Chrome 扩展

    编写 google chrome 扩展时可以使用 CORS 吗 我看到了这个 http developer chrome com extensions contentSecurityPolicy html 我尝试将其插入清单中 conten
  • 在 Snakemake HTML 报告中包含参数和源代码

    我想在我的html报告中包含shell命令以及snakemake规则的外部脚本的源代码 我看到人们在RULE序列的表中包含这些 下面的示例是文档中基本示例的一部分 https snakemake readthedocs io en stab
  • 从每个组件捕获鼠标事件

    我的 WinForm C 应用程序上的 MouseEvents 存在问题 我想要得到all鼠标单击我的应用程序 但我不想在每个子组件中放置一个侦听器 也不使用 Windows 鼠标挂钩 在 Flash 上 我可以在舞台上放置一个侦听器来获取
  • 更改命令面板的键绑定

    如何更改 Visual Studio Code 中命令面板的键绑定 它没有出现在键盘快捷键中 并且一般情况下和特定情况下的互联网搜索都没有提供答案 我找不到它的原因是因为它在键盘快捷键中显示为 显示所有命令 而不是 命令调色板
  • 使用 jython 获取环境(windows 或 unix)

    如何确定环境是windows还是unix 我想执行类似的代码 如下所示 请建议 import os if os getenv windows os system cmd c if os getenv unix os system sh sh
  • PHPMailer 附件类型和大小限制

    我有一个表单 我正在使用 PHPMailer 将该表单中的数据发送到我的电子邮件 用户也可以发送附件 但我有一个问题 如何使 PHPMailer 拒绝大于 2Mb 的附件并仅允许 iamge 附件 不允许其他类型的文档 这是我使用 PHPM
  • 如何在 pandas 中使用 pd.cut

    谁能帮我弄清楚为什么这不起作用 ages 15 19 20 24 25 29 30 34 35 39 40 44 45 49 50 54 55 59 60 64 65 69 70 74 75 79 80 84 race age group
  • 从函数设置单元格值

    细胞内容物A1 is test 2 where test是函数 Function test ByRef x As Double As Double Range A2 x test x x End Function 你能解释一下为什么这给出了
  • PreventDefault() 对我不起作用

    为什么这会拒绝工作 HTML 的东西 div ul li span a href contact html Contact a span li ul div JavaScript 的东西 div nav bar filter a click
  • 为什么代码不以 Pretty Json 格式打印?

    这是我的代码 我正在尝试将输出打印为漂亮的 json 格式 但不明白为什么它不打印漂亮的 json 这是我每次尝试后得到的输出 data host php net class IN ttl 30 type MX pri 0 target p
  • 新的 Typescript“满足”运算符

    这是一个来自官方公告有关satisfies操作员 type Colors red green blue Ensure that we have exactly the keys from Colors const favoriteColor
  • ORMLite:如何在没有外键的情况下连接两个表

    我必须加入两个独立的表sqlite 他们没有任何外键关系 例子 表A有一个字段name 表B有一个字段primaryName 我想做类似的事情 select A from A inner join B on A name B primary
  • 在 VS Code 中调试在 Docker 中运行的 Node Typescript 应用程序

    我正在 Docker 中运行一个 Node 应用程序 docker compose 我使用 Traefik 作为代理 我希望能够在 VS Code 中调试它 但我无法连接到我的应用程序 connect ECONNREFUSED 127 0