Alguém usou o node-inspector com o Grunt para depuração de aplicativos? Se não, você pode recomendar uma ferramenta de depuração para aplicativos baseados no Grunt?
Estou trabalhando com nodejs para um aplicativo do lado do servidor e tenho o Grunt para usar tarefas separadas (isso porque os usuários podem executar tarefas separadamente).
node-inspector
que fala comnode --debug
, fornecendo as informações de depuração para um navegador que se conecta. Isso é incrível, porque você pode conectar o Chrome ao processo de inspetor de nó e usar todas as ferramentas do inspetor da web para depurar seu aplicativo. github.com/dannycoates/node-inspectorRespostas:
Para executar o grunt na depuração, você precisa passar o script do grunt para o nó explicitamente:
e coloque uma
debugger;
linha em sua tarefa.node-inspector
irá então abrir um navegador com ferramentas de depuração.Editar 28 de fevereiro de 2014
node-inspector
adicionou o comandonode-debug
, que ativa o nó em um--debug
estado e abre o navegador para anode-inspector
página, parando quando atinge a primeiradebugger
linha ou ponto de interrupção definido.Editar 30 de janeiro de 2015
No Windows, as coisas são um pouco mais complicadas. Veja a resposta de @ e.gluhotorenko para obter instruções.
fonte
$(which grunt)
é? É apenas o Gruntfile.js que desejo depurar? E paratask
eu coloco (usandoserve
como exemplo)grunt serve
ou apenasserve
? Eu tenteinode-debug Gruntfile.js serve
e muitas outras coisas, mas simplesmente não consigo fazer isso funcionar. O Node-inspector abre e quebra na primeira linha, mas não consigo interromper aserve
tarefa, mesmo se colocar umadebugger;
linha como a primeira linha da função.grunt.js
script grunt-cli . Esse é o script que realmente executa o Grunt. Se você estiver no Windows, consulte stackoverflow.com/a/13443026/240358 (a resposta abaixo disso) para uma possível localização do script grunt-cli. Isso toma o lugar degrunt
em seu comando - no seu exemplo, substituatask
porserve
Solução Windows
Corre
do cmd no diretório com o seu
Gruntfile.js
. Não se esqueça de colocar adebugger;
linha nos locais necessários.fonte
grunt-cli
pacote:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
Para depurar, temos que modificar o arquivo grunt em bin. Na minha máquina, o grunt é instalado globalmente, então fui para / usr / local / lib / node_modules / grunt / bin, abri o arquivo e modifiquei:
#!/usr/bin/env node
Para
#!/usr/bin/env node --debug-brk
--debug-brk irá quebrar na primeira linha do javascript executado.
Fazer isso sozinho não é suficiente, pois você não será capaz de encontrar seu arquivo js de tarefa grunt no menu suspenso no inspetor de nó, então você tem que modificar o arquivo que você está interessado em depurar adicionando
debugger;
onde você quer que o ponto de interrupção aconteça. Agora você pode clicar em continuar após o primeiro intervalo, e você quebrará na suadebugger;
linhaBastante desajeitado, mas é a única maneira que encontrei até agora.
fonte
Recentemente criei o grunt-node-inspector para configurar facilmente o node-inspector com o resto do seu fluxo de trabalho do grunt, verifique: https://github.com/ChrisWren/grunt-node-inspector
Aqui está uma seção de um Gruntfile que ilustra como você pode depurar uma tarefa grunt usando grunt-node-inspector, grunt-concurrent e grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile. js # L44-L77
fonte
node --debug-brk $(which grunt) node-inspector build test
tipo de coisa correr ? Eu gosto disso.node-inspector
não vai sair e permitirbuild
etest
executar, uma vez que funciona para sempre. Eu adicionei um link para um snippet onde o tenho configurado.node-inspector &
, deixando-o em segundo plano e concluindo. Alguma ideia sua sobre isso?grunt node-inspector
e, em seguida, vou para a url do host local e não vejo nenhum arquivo de origem. Apenas esvazie as ferramentas do depurador.grunt node-inspector
enode --debug-brk Gruntfile.js
do meu diretório grunt. No entanto, quando eu defino um ponto de interrupção no arquivo grunt, ele simplesmente trava com um erro de conexão.Eu fiz uma tarefa para executar meu aplicativo e iniciar o node-inspector. É muito melhor do que a proposta atual, você só precisa adicionar esta tarefa no gruntfile:
fonte
Ótimas respostas aqui. Em 2017, agora você pode fazer
node --inspect --debug-brk $(which grunt) taskName
Que imprime algo parecido.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471
Abra esse URL no Chrome e pronto!
Estou usando o Node 7.3.0 e estou no Mac. Talvez você precise seguir alguns dos conselhos em outras postagens para implementá-lo no Windows.
fonte
Atualização de 2019
Se você deseja iniciar a tarefa grunt no modo de depuração e interromper na primeira linha:
node --inspect-brk $(which grunt) taskName
Se você deseja iniciar a tarefa grunt no modo de depuração em uma porta específica:
node --inspect-brk=8080 $(which grunt) taskName
se você deseja anexar VSCODE ao processo do nó que executa a sessão de depuração do grunt, use a seguinte configuração em vscode:
fonte