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"
}
这是mydocker 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调试了错误的进程,这就是断点设置不正确的原因