我已经在VSCode中成功为Docker中的Node设置了调试器:
(这可行)
{
"type": "node",
"request": "attach",
"name": "Attach to Docker",
"localRoot": "${workspaceFolder}/src/",
"remoteRoot": "/app/src/",
"restart": true,
"sourceMaps": true,
"showAsyncStacks": true,
"port": 9229
}
而且我可以在调试时使用VSCode's Remote Containers extension,没问题。我的docker-compose文件的重要部分在这里:
(这可行)
web:
build: .
command: npm run dev
volumes:
- ./tsconfig.json:/app/tsconfig.json
- ./src:/app/src
- ts-cache:/root/cache
ports:
# server api
- '5000:5000'
# node debugger
- '9229:9229'
还有节点脚本:
(这可行)
ts-node-dev \
--cache-directory /root/cache \
--respawn \
--transpileOnly \
--inspect=0.0.0.0:9229 \
-- \
src/index.ts
我不能将断点添加到Jest测试中。这是我运行Jest的脚本:
exec node --nolazy \
--inspect=0.0.0.0:9239 \
./node_modules/.bin/jest \
--runInBand \
--clearMocks \
--restoreMocks \
--verbose=false \
--watchAll \
"$@"
我正在docker-compose run --rm -p 9239:9239 web ./test.sh
中在docker-compose中运行一项服务。我正在尝试这个VSCode启动脚本(与上面的脚本非常相似):
{
"type": "node",
"request": "attach",
"name": "Attach to Docker Test",
"port": 9239,
"restart": true,
"localRoot": "${workspaceFolder}/src/",
"remoteRoot": "/app/src/"
}
请注意,调试器确实可以成功附加,但是断点未验证且不会中断。当悬停断点时,编辑器会说:
“断点被忽略,因为找不到生成的代码(源映射问题?)。”
我专门删除了sourceMaps,然后尝试将sourceMaps设置为false,但这似乎无法解决问题。
任何帮助表示赞赏!