node.js - studio - node-inspector
Cómo deshabilitar en el depurador del nodo "break on first line" (6)
¿Existe un argumento de línea de comando o una variable de entorno que deshabilita la función "romper en primera línea" del depurador de nodos?
Escriba una extensión de cromo para hacer clic en el botón de inicio
1. Ejecutar shell
mkdir run_as_devtools
cd run_as_devtools
touch manifest.json
touch run_as_devtools.js
2. Edita los archivos
run_as_devtools.js:
if (location.protocol === ''chrome-devtools:'' && location.href.match(/ws=localhost/))(function () {
''use strict'';
setTimeout(function () {
try {
document.querySelector(''html /deep/ .long-click-glyph'').click();
} catch (e) {
console.log(e);
}
}, 500);
})();
manifest.json: (usa la clave de chromevox, así que no lo uses con chromevox)
{
"content_scripts": [{
"js": [ "run_as_devtools.js" ],
"matches": [ "<all_urls>" ]
}],
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
"manifest_version": 2,
"name": "Elevated Devtools extension",
"version": "1.0"
}
3. Instala la extensión
Configuración de Chrome - Más herramientas - Extensiones - Modo de desarrollador - Cargar la extensión desempaquetada - seleccionar la carpeta run_as_devtools
PD: Mejor usarlo con el administrador del inspector de nodos https://.com/a/43018133/4831179
Referencia: https://.com/a/17044405/4831179
De acuerdo con este problema que he abierto en el repositorio del node , actualmente, esto no es posible. Esto también es algo que los nodos no ven como una característica que vale la pena implementar "porque parece algo sin sentido. [...] La vinculación a un proceso en ejecución hace exactamente" lo mismo ". Vea el resto de la discusión en el tema mencionado.
Si crees que quieres una función así, vota esto, deja un comentario en el número de Github y, si no hay respuesta, abre uno nuevo y publícalo aquí también.
En realidad, hay dos conceptos de depuración en el nodo: el depurador V8 (con su protocolo basado en TCP) y un depurador de línea de comandos del nodo (CLI).
Cuando ejecuta la node debug app.js
, se ejecuta una CLI de depurador en el proceso de nodo maestro y se genera un nuevo proceso de nodo secundario para la secuencia de comandos depurada ( node --debug-brk app.js
). La opción --debug
o --debug-brk
se utiliza para activar el depurador V8 en el proceso hijo.
La diferencia entre --debug
y --debug-brk
es que este último agrega un punto de interrupción en la primera línea, por lo que la ejecución se detiene inmediatamente allí.
Sugeriría esta solución:
Cuando está creando un proceso hijo desde su servidor web, ejecute
node --debug
lugar denode debug
denode debug
. De esta forma, solo se crea un proceso secundario, ejecuta su aplicación y no se pausa en la primera línea.Ahora puede usar cualquier herramienta de depuración que admita el protocolo de depuración V8: depurador de CLI incorporado en el node-inspector o puede implementar su propia interfaz de depurador (GUI) si lo desea. (Supongo que esto es lo que intenta lograr ejecutando el depurador CLI en segundo plano).
Si decidió usar la CLI incorporada, solo genere otro proceso secundario y diga al depurador de la CLI del nodo que se conecte con el proceso iniciado en el paso 1:
node debug localhost:5858
y continuar como antes.
Encontré esto mientras buscaba la respuesta yo mismo - Parece que simplemente puedes correr
node-debug --debug-brk=0 (progname)
Espero que esto ayude a alguien.
Resolví el mismo problema simplemente cambiando del nodo v6 al v7
Similar a la idea de Blackmiaool pero más simple, con el nodo v8 puede iniciar la secuencia de comandos con --inspect. Si tiene el siguiente código, cuando abra la ventana de depuración en Chrome devtools lo llevará directamente al punto de depuración. Además, esto le permite ejecutar el código asincrónico pulsando el botón "continuar", que permite que su código se ejecute antes de regresarlo a la réplica:
// app_shell.js
var UserModel = require("./some_user_model");
function looper() {
var Tmp = { UserModel: UserModel };
debugger;
setTimeout(looper, 100);
}
looper();
Y en un script de shell puede hacer algo como:
echo "Click the ''Open dedicated DevTools for Node'' link"
python -mwebbrowser about:inspect
node --inspect app_shell.js