gpt4 book ai didi

node.js - 在VS Code中调试在Docker中运行的Node Typescript应用

转载 作者:行者123 更新时间:2023-12-02 19:54:20 26 4
gpt4 key购买 nike

我正在Docker中使用docker-compose运行Node应用程序。我正在使用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实际执行的命令是:
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 http://core.localhost上定义的URL访问我的应用程序,但是我不知道如何将调试器附加到该应用程序

谢谢!

最佳答案

我的方法不好,因为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/**"
]
}

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

关于node.js - 在VS Code中调试在Docker中运行的Node Typescript应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58935766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com