如何在VSCode远程容器中调试Jest

我已经在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","name": "Attach to Docker Test","port": 9239,"remoteRoot": "/app/src/"
    }

请注意,调试器确实可以成功附加,但是断点未验证且不会中断。当悬停断点时,编辑器会说:

  

“断点被忽略,因为找不到生成的代码(源映射问题?)。”

我专门删除了sourceMaps,然后尝试将sourceMaps设置为false,但这似乎无法解决问题。

任何帮助表示赞赏!

xuu805 回答:如何在VSCode远程容器中调试Jest

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3158343.html

大家都在问