Se você está tendo problema para debuggar no VS Code os seus projetos com Typescript que usam ts-node ou ts-node-dev, como linhas erradas no debbuger ou ele não selecionando nenhuma linha, não se preocupe, a solução é simples.
Por algum motivo o debugger do VS Code se confunde ao tentar interpretar os arquivos .map e acaba selecionando as linhas erradas, o que pode inviabilizar o uso do debbuger na sua aplicação. Essa solução serve também para quem estiver desenvolvendo com Docker.
Explicarei passo a passo as configurações para que você identifique qualquer possível problema em seu projeto.
Configurando o package.json
Ele deve incluir o ts-node ou ts-node-dev nas suas dependências:
"devDependencies": {
"ts-node": "8.9.0",
"ts-node-dev": "1.0.0-pre.44",
}
Crie um script para rodar o seu projeto com ts-node-dev ou ts-node:
"scripts": {
"dev": "ts-node-dev --inspect=0.0.0.0:7001 --exit-child --respawn src/index.ts",
}
Configurando seu tsconfig.json
Precisamos sempre habilitar a opção de sourceMap em compilerOptions, essa opção faz com que o compilador gere os arquivos de mapeamento necessários para o debug funcionar corretamente:
"compilerOptions": {
...
"sourceMap": true
}
Configurando o debugger do VS Code
Crie ou modifique seu .vscode/launch.json . Não esqueça de configurar para a porta que configuramos nosso script de execução nopackage.json .
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Docker: Attach to Node",
"port": 7001,
"address": "localhost",
"localRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"/app/*": "${workspaceRoot}/*"
},
"remoteRoot": "/app/"
}
]
}
A sacada está aqui na propriedade sourceMapPathOverrides, precisamos explicitamente indicar para o debugger qual o caminho ele deverá seguir dos arquivos sourcemap para os arquivos dentro do contêiner Docker.
"sourceMapPathOverrides": {
"<WORKDIR>/*": "${workspaceRoot}/*"
}
Existe uma issue em aberto no repositório do Typescript sobre esse problema, por enquanto a solução é usar essa configuração.
Agradecimentos a solução original: https://medium.com/@mitsuhideohi/debugging-uncompiled-typescript-code-running-on-a-docker-container-213418ab2b1f
7
votos
- Written by: Henrique Marques Fernandes
- Posted on: 25/04/2020
- Tags: debug, typescript, vscode