Ich verwende webpack-dev-server
, um eine Nestjs-Anwendung in einem Docker-Container auszuführen. Alles ist in Betrieb, aber ich kann die Anwendung nicht von meiner VS-Code-Instanz aus debuggen. Ich versuche, den 9229-Port mithilfe dieser Konfiguration auf dem webpack.config.js
folgenden Konto freizulegen :
devServer: {
host: '0.0.0.0',
port: 9229,
},
Wenn ich netstat -l
im Container laufe, kann ich sehen, dass der Knoten den 9229-Port nicht überwacht:
Ich mache den Port 9229 in den Dockerfile- und Docker-Compose-Dateien verfügbar. Die Docker-Datei:
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"]
Und die Datei 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:
Und dies ist das Skript, mit dem ich die Anwendung ausführe:
"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
Meine Startkonfiguration lautet wie folgt:
{
"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>/**"
],
}
Und wenn ich diese Konfiguration mit laufendem Container ausführe, erhalte ich die Meldung, dass VS Code keine Verbindung zum Prozess herstellen kann.
Meine Frage lautet also: Gibt es eine Möglichkeit, die JavaScript / TypeScript-App zu debuggen, die webpack-dev-server
in einem Docker-Container ausgeführt wird? Was ist in meiner Umgebung falsch?
Danke für die Hilfe.
BEARBEITEN
Anscheinend hat mein Problem keine Beziehung zu Docker, da ich es außerhalb des Containers reproduzieren kann.
docker-compose ps
, dass in Ports gebundenopen-tuna-api
hat9229:9229
? Versuchen Sie auch, die Adresse in der Konfiguration von vscode inlocalhost
oder zu ändern127.0.0.1
.ports
. Es kann wahrscheinlich nicht gestartet werden, da entweder der Inspector-Server des Knotens oder der Webpack-Entwicklungsserver beim Versuch, eine Verbindung herzustellen, fehlschlägt: 9229 - da beide versuchen, an denselben Port zu binden.localhost
und127.0.0.1
in der VS-Code-Konfiguration. Außerdem habe ich den9229
Port auf9000
über alle Dateien geändert und das Problem besteht weiterhin.webpack-dev-server
selbst zu debuggen. Nachdem Sie das Bundle bereits erstellt haben, soll der Dev-Server denwebpack --config webpack.config.js
Aufruf vermeiden . Wie lautet die Eingabedatei des Servers?Antworten:
Schauen Sie sich Ihre Konfiguration an und stellen Sie sicher, dass Sie das
program
Feld einschließen . Und zeigen Sie auf die richtige Datei unternode_modules
.Das sollte dich zum Laufen bringen.
Wenn Sie mehr darüber erfahren möchten, gibt es eine längere Konversation, die Sie möglicherweise nützlich finden - lesen Sie diesen Kommentar auf dem GitHub-Repo des Webpack-Dev-Servers .
quelle