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

时间:2019-11-05 15:35:58

标签: node.js docker visual-studio-code jestjs

我已经在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,但这似乎无法解决问题。

任何帮助表示赞赏!

0 个答案:

没有答案