我正在使用
当我在容器内运行
这是我用来运行应用程序的脚本:
当我使用正在运行的容器运行此配置时,收到一条消息,表示VS Code无法连接到进程。 所以,我的问题是:有没有一种方法可以在Docker容器内运行的webpack-dev-server上调试JavaScript/TypeScript应用程序?我的环境有什么问题吗?
感谢您的帮助。
编辑
显然,我的问题与Docker无关,因为我可以在容器外重现它。
webpack-dev-server
在Docker容器内运行一个Nestjs应用程序。所有内容都已经启动并运行,但是我无法从我的VS Code实例中调试该应用程序。我尝试使用以下配置在webpack.config.js
中暴露9229端口:devServer: {
host: '0.0.0.0',
port: 9229,
},
当我在容器内运行
netstat -l
命令时,我发现 Node 并未监听 9229 端口:
我将在Dockerfile和docker-compose文件中暴露9229端口。 Dockerfile:
FROM node:12.16.1-alpine
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn
COPY . .
EXPOSE 3000
EXPOSE 9229
CMD [ "yarn", "run", "start:debug"]
还有docker-compose.yml文件:
version: '3.7'
services:
open-tuna-api:
image: opentunaapi
ports:
- 3000:3000
- 9229:9229
volumes:
- ./dist:/usr/src/app/dist
- ./:/usr/src/app
networks:
- open-tuna-network
expose:
- 9229
networks:
open-tuna-network:
这是我用来运行应用程序的脚本:
"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
我的启动配置如下:
{
"name": "Attach",
"preLaunchTask": "compose-up",
"stopOnEntry": true,
"type": "node",
"request": "attach",
"port": 9229,
"cwd": "${workspaceFolder}", // the root where everything is based on
"localRoot": "${workspaceFolder}", // root of all server files
"remoteRoot": "/usr/src/app", // workspace path which was set in the dockerfile
"outFiles": ["${workspaceFolder}/dist/**/*.js"], // all compiled JavaScript files
"protocol": "inspector",
"restart": true,
"sourceMaps": true,
"trace": "verbose",
"address": "0.0.0.0",
"skipFiles": [
"<node_internals>/**"
],
}
当我使用正在运行的容器运行此配置时,收到一条消息,表示VS Code无法连接到进程。 所以,我的问题是:有没有一种方法可以在Docker容器内运行的webpack-dev-server上调试JavaScript/TypeScript应用程序?我的环境有什么问题吗?
感谢您的帮助。
编辑
显然,我的问题与Docker无关,因为我可以在容器外重现它。
docker-compose ps
显示open-tuna-api
是否在端口中绑定了9229:9229
?同时尝试将 VSCode 配置中的地址更改为localhost
或127.0.0.1
。 - cbrwebpack-dev-server
本身,并且在已经构建了捆绑包之后,开发服务器应该避免调用webpack --config webpack.config.js
。那么服务器的入口文件是什么? - MrBar