quarta-feira, março 05, 2014

Debug no NodeJS

Comecei a 'brincar' com o NodeJS há só 2 semanas por isso sou relativamente inexperiente nesta tecnologia. Rudemente, o NodeJS é uma framework que nos possibilita construir aplicações web-based mas em que o server side é conseguido à custa de javascript.

Quando peguei nos primeiros exemplos, comecei por coisas muito minimalistas, comecei a construir bases, a evoluir pequenos exemplos. Pelo facto do javascript ser executado server side não existe maneira directa de fazer debug ao código, se nos primeiros exemplos os console.log iam dando para resolver os problemas, conforme comecei a fazer código um pouco mais complexo o console.log já não era suficiente, estava a demorar imenso tempo a fazer debug e nem sempre era linear chegar ao problema.

Após uma pesquisa e uma ou duas conversas com amigos esta a a forma de fazer debug ao NodeJS para dummies:

1. Instalar o módulo node inspector
Isto pode ser conseguido de 2 formas. A primeira executando o comando npm install node-inspector. A segunda forma é colocar no ficheiro de configuração package.json, na área de devDependencies a seguinte entrada - "node-inspector" : "*", de seguida é só executar o npm install para que o package do node inspector seja adicionado ao projecto.

2. Inicia servidor de debug
Abrir uma nova consola e escrever: node-inspector &.

3. Executar a nossa aplicação em debug
Na nossa consola ir para a directoria do nosso ficheiro javascript e escrever: node --debug-brk [nomeDoFicheiro].js (Ex: node --debug-brk main.js). Isto vai colocar um break point automático na primeira linha de código do ficheiro javascript.

4. Debug no browser
Ir a um browser que tenha uma ferramenta de debug instalada, eu por exemplo utilizo o chrome, e escrever: http://127.0.0.1:8080/debug?port=5858

E está feito, no browser irá aparecer o código com o debugger parado na primeira linha do ficheiro, podendo agora ser feito tudo o que normalmente é feito com um ficheiro javascript típico, executado em client side.



Sem comentários: