Docker环境下Node.js TypeScript应用断点未绑定无法触发如何解决?
VS Code Docker环境下TypeScript断点未绑定问题解决方案
1. 调整tsconfig.json配置
在compilerOptions中新增两项配置,明确source map的路径映射规则:
{ "compilerOptions": { // 保留原有配置不变,新增以下两项 "sourceRoot": "/app/src", "mapRoot": "/app/dist" } }
2. 调整launch.json配置
新增source map路径重写规则和源文件查找规则,修正本地与容器内的路径映射关系:
如果你的工作区根目录是项目根目录(即src文件夹的父目录),调整后配置如下:
{ "configurations": [ { "name": "Docker Node.js Launch", "type": "docker", "request": "launch", "port": 9229, "protocol": "inspector", "preLaunchTask": "docker-run: debug", "localRoot": "${workspaceFolder}/", "platform": "node", "remoteRoot": "/app/", "sourceMaps": true, // 新增以下两项配置 "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "sourceMapPathOverrides": { "/app/src/*": "${workspaceFolder}/src/*" } } ] }
如果你的VS Code直接打开src作为工作区根目录,对应修改localRoot为${workspaceFolder}/,remoteRoot为/app/src/,同步调整sourceMapPathOverrides即可。
3. 调整tasks.json启动命令
给node启动参数显式添加source map启用标识:
{ "tasks": [ { "type": "docker-run", "label": "docker-run: debug", // 保留其他配置不变,修改command参数 "dockerRun": { "command": "node --inspect-brk=0.0.0.0 --enable-source-maps dist/index.js" } } ] }
4. 检查Dockerfile配置
确保构建镜像时,将项目根目录下的src文件夹、编译后的dist文件夹(包含.js.map文件)都复制到容器的/app路径下,不要只复制dist文件夹,否则调试器无法找到对应源文件完成断点绑定。
验证步骤
所有配置调整完成后,删除本地旧的项目Docker镜像,重新按F5启动调试,断点即可正常绑定生效。
内容的提问来源于stack exchange,提问作者Jim Walmsley
相关产品推荐
相关产品推荐

