node.js - nodejs - ¿Se puede configurar Visual Studio Code para iniciarse con nodemon?
nodemon debug (7)
¡Sí tu puedes! A partir de una actualización reciente, puede adjuntar el depurador a un proceso de Nodemon en ejecución. Esta página tiene más información . Busca nodemon en la página para ver las instrucciones.
He instalado nodemon
como un paquete global en mi sistema. Funciona cuando ejecuto nodemon
en cmd.
Pero cuando estoy usando vscode con este archivo launch.json, vscode lanza esta excepción:
inicio de solicitud: el ejecutable en tiempo de ejecución XXX / XXX / XXX / XXX / nodemon no existe
El launch.json es:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "app.js",
"stopOnEntry": false,
"args": [],
"cwd": ".",
"runtimeExecutable": nodemon,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"externalConsole": false,
"preLaunchTask": "",
"sourceMaps": false,
"outDir": null
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858
}
]
}
cuando borro el nodemin en runtimeExecutable
se ejecuta perfectamente con el nodo
Adjuntar es definitivamente una opción fácil. Para asegurarse de que su código se rompa, asegúrese de ejecutar nodemon con --inspect-brk
(nodo 8+), por ejemplo:
nodemon --inspect-brk src/app.js
Después de iniciar nodemon, se registrará el puerto abierto para las conexiones de depuración:
Debugger listening on ws://127.0.0.1:9229/someUUID
Puedes tomar ese puerto para construir tu configuración de lanzamiento, que es bastante simple:
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9229,
"restart": true
},
En el código de Visual Studio crea una configuración de lanzamiento:
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858,
"restart": true
}
ejecuta nodemon desde la línea de comandos: nodemon --debug server.js
Ahora ''Attach'' de VC y vuala.
No pude obtener la respuesta de @ AdrianT trabajando con el depurador adjunto. Parece que hay una nueva forma compatible para hacer esto:
- Abra el menú desplegable Iniciar configuración y seleccione "Agregar configuración ..."
- Seleccione "Node.js: Configuración de Nodemon"
Agregará algo como esto a tu launch.json:
{
"type": "node",
"request": "launch",
"name": "nodemon",
"runtimeExecutable": "nodemon",
"program": "${workspaceRoot}/app.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
Asegúrese de que su configuración de "programa" sea la secuencia de comandos de punto de entrada correcta.
Debe instalar nodemon globalmente para que esto funcione (npm install -g nodemon) (según la documentación )
Su aplicación ahora se ejecuta y puede establecer puntos de interrupción que serán alcanzados y la consola se registra en la ventana de terminal integrada.
Tenga en cuenta que terminar la sesión de depuración solo finaliza el programa para depurar, no el propio nodemon. Para terminar nodemon, presione Control-C en el terminal integrado.
No, actualmente no puede. Pero me las arreglé para hacer que esto funcionara un poco usando nodemon. Lo empiezo desde Grunt. Pero una línea de comando equivalente debería hacer lo mismo.
EDITAR : Después de una tarde de pruebas, puedo decir que el enfoque que sigue a continuación sigue siendo un tanto desconcertante: S, la conexión falla de manera intermitente y, a veces, se ignoran los puntos de interrupción.
EDIT2 : También puede especificar un puerto de depuración no predeterminado en Gruntfile usando [''--debug-brk=5860'']
para nodeArgs
. También me han recomendado usar --debug-brk
lugar de --debug
. Quizás esto elimine el flakeyness actual. Volveré y mencionaré aquí si ayuda (actualmente cambié de proyecto).
En caso de que esto pueda ayudar a alguien, está trabajando con la configuración que se muestra a continuación en la versión de Código VS actual (p. Ej. V0.10.6) en Windows 10. Pero probablemente también funcione en Mac (es posible que lo compruebe más adelante). Pero tenga en cuenta que a veces tengo que desencadenar una reconstrucción cambiando + guardando un archivo antes de que el depurador lo detecte.
/.vscode/launch.json
{
"configurations": [{
"name": "Launch",
"outDir": null
},{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858
}]
}
/Gruntfile.js
nodemon : {
dev : {
script : ''launcher.js''
},
options : {
ignore : [''node_modules/**'', ''Gruntfile.js''],
nodeArgs: [''--debug''],
env : { PORT : ''4123''
}
}
}
Supongo que el puerto de depuración 5858 es el predeterminado, ya que no se especifica aquí (tenga en cuenta que está en launch.json
arriba).
Primero, instale nodemon como una dependencia dev:
npm install --save-dev nodemon
Luego, configura tu configuración de lanzamiento así:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch with nodemon",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/nodemon/bin/nodemon.js",
"args": ["${workspaceRoot}/index.js"],
"runtimeArgs": ["--nolazy"]
}
]
}
Las piezas más importantes son la propiedad del program
que apunta al script nodemon y la propiedad args
que contiene su script de punto de entrada normal.
Yo uso el plugin Node Exec. Le permite ejecutar y detener una aplicación de nodo en vcs presionando F8 y F9 (se aplica en el archivo abierto en el editor). Esto podría ayudar como una solución temporal (temporal).