¿Cuál es la forma correcta de depurar un script npm usando vscode?

Tengo un script npm que estoy tratando de depurar. Utilizo vscode, así que pensé que crearía una configuración de depuración y la atravesaría con el depurador.

Mi aspecto de script npm es:

"scripts": { ... "dev": "node tasks/runner.js", } 

Así que creé la siguiente configuración de depuración:

 { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "runtimeExecutable": "npm", "cwd": "${workspaceRoot}", "runtimeArgs": [ "run", "dev" ], "port": 5858, "stopOnEntry": true } ] } 

Y cuando lo enciendo, el script se ejecuta, pero vscode nunca puede conectarse y me aparece el error:

No se puede conectar con el tiempo de ejecución a través del protocolo ‘heredado’; Considere usar el protocolo ‘inspector’ (tiempo de espera después de 10000 ms).

Intenté agregar un protocolo de inspector:

  { "type": "node", "request": "attach", "name": "Attach (Inspector Protocol)", "port": 9229, "protocol": "inspector" } 

Y ejecutando el script npm a través de:

 npm run dev --inspect 

Y esta vez me sale el error:

Asegúrese de que Node se haya lanzado con –inspecto. No se puede conectar al proceso de tiempo de ejecución, tiempo de espera después de 10000 ms – (motivo: no se puede conectar al objective: conectar ECONNREFUSED 127.0.0.1:9229).

No estoy seguro de qué parte me falta.

Editar por etiqueta duplicada

Veo la otra pregunta re: debugging an npm script via vscode, pero los detalles en la otra pregunta y las respuestas no son tan detallados y específicos. Si alguien está buscando los mensajes de error específicos de vscode que encontré o el tipo de configuración que tenía, no obtendrían necesariamente el nivel de respuesta que la respuesta elegida de esta pregunta da.

No debe intentar depurar la npm script porque lo que realmente desea es adjuntar su depurador a la secuencia de comandos que se inicia con el comando npm run (NPM aquí se usa solo como un ejecutor de tareas).

 { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceRoot}/tasks/runner.js" } ] } 

Si realmente desea ejecutarlo utilizando el script npm, puede usar la siguiente configuración:

 { "type": "node", "request": "launch", "name": "Launch via NPM", "runtimeExecutable": "npm", "windows": { "runtimeExecutable": "npm.cmd" }, "runtimeArgs": [ "run-script", "dev" ], "port": 5858 } 

pero también tiene que cambiar su comando de script (especifique un puerto de depuración)

  "scripts": { "dev": "node --nolazy --debug-brk=5858 tasks/runner.js" }, 

Puede explorar varias configuraciones de depuración simplemente haciendo clic en el icono de engranaje y seleccionando una.

introduzca la descripción de la imagen aquí

Puede encontrar más información sobre la depuración de Node.js en la documentación de VS Code .