vscode typescript node.js在docker断点集中调试,但尚未绑定

vscode typescript node.js在docker断点集中调试,但尚未绑定,node.js,typescript,docker,debugging,visual-studio-code,Node.js,Typescript,Docker,Debugging,Visual Studio Code,我正在尝试调试vscode内部的typescript node.js停靠应用程序 我的结构如下: |api |- src |- dist 我的DockerFile是这样的: FROM node:latest # Create app directory WORKDIR /usr/src/app # Install app dependencies COPY package.json yarn.lock ./ RUN yarn # Bundle app source COPY . . #

我正在尝试调试
vscode
内部的
typescript node.js停靠应用程序

我的结构如下:

|api
|- src
|- dist
我的
DockerFile
是这样的:

FROM node:latest

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json yarn.lock ./
RUN yarn

# Bundle app source
COPY . .

# Build typescript source
RUN npx tsc

EXPOSE 8080
EXPOSE 9229
CMD [ "yarn", "start" ]
{
  "restartable": "rs",
  "watch": ["src"],
  "ext": ".ts,.js",
  "ignore": [".git", "node_modules/**/node_modules"],
  "exec": "npx tsc && node ./dist/server.js",
  "signal": "SIGINT"
}
我的主文件
server.ts

import { Request, Response } from 'express';
import express = require('express');
import os = require('os');

const app = express();
const port = 8080;

app.get('/', (req: Request, res: Response) => {
  res.send(`<h3>It's ${os.hostname()} - (API) - ${port}</h3>`);
});
app.listen(port, () => {
  console.log(`[API] Server Started on Port ${port}`);
});
命令
warn start
进入我的
DockerFile
execute`nodemon,配置如下:

FROM node:latest

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json yarn.lock ./
RUN yarn

# Bundle app source
COPY . .

# Build typescript source
RUN npx tsc

EXPOSE 8080
EXPOSE 9229
CMD [ "yarn", "start" ]
{
  "restartable": "rs",
  "watch": ["src"],
  "ext": ".ts,.js",
  "ignore": [".git", "node_modules/**/node_modules"],
  "exec": "npx tsc && node ./dist/server.js",
  "signal": "SIGINT"
}
这是my
docker compose.yml中的服务配置

version: "3.8"
services:
  api:
    build: api/
    environment:
      - NODE_ENV=development
      - NODE_OPTIONS=--inspect=0.0.0.0:9229
    deploy:
      replicas: 1
      restart_policy:
        max_attempts: 3
        condition: on-failure
      update_config:
        parallelism: 1
        delay: 1s
    volumes:
      - ./api:/usr/src/app
      - node_modules-api:/usr/src/app/node_modules
    ports:
      - 9229:9229
最后,我的
launch.json
如下所示:

{
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to API",
      "port": 9229,
      "protocol": "inspector",
      "cwd": "${workspaceFolder}/api/",
      "localRoot": "${workspaceFolder}/api/",
      "remoteRoot": "/usr/src/app/",
      "outFiles": ["${workspaceRoot}/api/dist/**/*.js"],
      "sourceMaps": true,
      "trace": "verbose",
      "stopOnEntry": true
    }
  ]
}
我的服务正在正确启动,我的
vscode
调试器似乎连接正确:

Debugger listening on ws://0.0.0.0:9229/41993b9a-4af4-4106-b49f-0fe601e6571e

For help, see: https://nodejs.org/en/docs/inspector

yarn run v1.22.4

$ node src/wrapper.js

Starting inspector on 0.0.0.0:9229 failed: address already in use

[nodemon] 2.0.4


[nodemon] to restart at any time, enter `rs`

[nodemon] watching path(s): src/**/*

[nodemon] watching extensions: ts,js


[nodemon] starting `npx tsc && node ./dist/server.js`


[API] Server Started on Port 8080


Debugger attached.
但当我试图放置一个
断点时,结果如下:

我读了很多关于这个问题的书,但是没有一个解决方案对我有效

我还在此处删除了vscode的日志文件:

如果你需要任何额外的信息,请告诉我


提前感谢。

事实证明,通过使用
节点\u选项=--inspect
作为环境变量,每个进程都试图启动检查器。但由于我是用Thread启动我的应用程序,Thread进程获得了inspector,我的节点进程无法绑定到该端口

所以vscode调试了错误的进程,这就是断点设置不正确的原因