Estoy tratando de depurar una aplicación Node/Express TypeScript en VS Code (v. 1.24.0) y todos mis puntos de interrupción aparecen atenuados durante la depuración.
El error es "Punto de interrupción no verificado, Puntos de interrupción establecidos pero aún no vinculados". He buscado pero no puedo averiguar qué está mal con mi configuración. No hay ningún error en la consola, el depurador se adjunta correctamente cuando elijo el proceso, pero los puntos de interrupción no funcionan.
¿Cómo depuro esto?
estructura básica de carpetas:
/.vscode /src/server.ts /dist/server.js launch.json tsconfig.jsonlanzamiento.json
{ "type": "node", "request": "attach", "name": "Attach by Process ID", "processId": "${command:PickProcess}", "protocol": "inspector", "address": "localhost", "port": 8080, "restart": true, "preLaunchTask": "npm: build", "sourceMaps": true, "outFiles" : [ "${workspaceFolder}/dist/**/*.js" ] },tsconfig.json
{ "compilerOptions": { "alwaysStrict": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "module": "commonjs", "moduleResolution": "node", "target": "es6", "outDir": "dist", "rootDir": "src", "sourceMap": true, "typeRoots": [ "node_modules/@types" ] }, "include": [ "src/**/*.ts" ], "exclude": [ "node_modules" ] }tareas.json
"version": "2.0.0", "tasks": [ { "type": "npm", "script": "build", "group": { "kind": "build", "isDefault": true } } ]Para cualquiera que se encuentre con este error, pude encontrar una solución. El problema era la forma en que iniciaba el proceso Node, no el mapeo de los mapas de origen (que produce un error diferente).
Para adjuntarlo al proceso, lo inicié desde la terminal de VS Code de esta manera:
node --inspect dist/server.jslanzamiento.json:
{ "type": "node", "request": "attach", "name": "Attach by Process ID", "processId": "${command:PickProcess}", "protocol": "inspector", "address": "localhost", "port": 8080, "restart": true, "preLaunchTask": "npm: build", "sourceMaps": true, "outFiles" : [ "${workspaceRoot}/dist/**/*.js" ] },Estaba encontrando que todos los puntos de interrupción que traté de establecer en un archivo tenían este problema, pero ninguno del resto.
Estaba nombrando el archivo dispatcher.js con minúsculas, pero llevándolo al nodo con:
const { Dispatcher } = require('./Dispatcher')y el contenido era una clase de JavaScript que se exportaba como:
module.exports = { Dispatcher }Encontré este problema usando vscode 1.25
Parece que se activa cuando se cambia una fuente que contiene un punto de interrupción (.ts) mientras se ejecuta la sesión de depuración. Los puntos de interrupción se pueden volver a habilitar volviendo a guardar la fuente o volviendo a alternar el punto de interrupción.
Sin embargo, si se cambió la fuente, entonces la depuración debe reiniciarse para estar sincronizada con la fuente.
Este problema parece extenderse también al modo de edición, los puntos de interrupción permanecerían "sin verificar" incluso después de salir del modo de depuración. Nuevamente, volver a guardar la fuente parece volver a habilitar los puntos de interrupción en este caso.