SlideShare una empresa de Scribd logo
1 de 19
9 erros que
desenvolvedores
Node.js cometem
Inclusive eu. :)
Fernando Henriques
● Desenvolvedor 10+ anos
● Senior Full Stack Developer
● JavaScript, Ruby, PHP e Java
● Front-end 💓 3000
github.com/fernandohenriques
● Hot reload
○ Nodemon
○ node-supervisor
○ Forever
1. Não utilizar development tools
Nome da empresa 1
1. Não utilizar development tools
1.2 Automatic browser refresh
○ Três steps:
1) Watch;
2) Enviar mensagem para os clientes conectados;
3) Page reload.
○ Libs úteis
■ watch - to watch for file changes
■ sendevent - server-sent events
■ uglify-js - for minifying the client-side JavaScript files
● Se você não está trabalhando com workers (>12), o
Node.js é single thread (usa um core de CPU)
● Exemplos de como você pode ocupar a sua thread
inteira e, assim, bloquear o evento loop
acidentalmente:
○ Parsear um json gigante com JSON.parse;
○ Imprimir um output muito grande de uma só vez.
2. Bloquear o event loop
● Soluções possíveis:
○ Monitorar o event loop
■ https://www.npmjs.com/package/blocked
○ Entender e respeitar as limitações do Node.js
○ Rodar sua aplicação em mais de um core
○ Estudar worker e worker pool
2. Bloquear o event loop
● Ou: Pense bem antes de usar async/await
3. Mau uso do event loop
● Mesmo código, usando async/await de forma mais
inteligente:
3. Mau uso do event loop
4. Usar let desnecessariamente
5. Callback Hell
5. Callback Hell
● Existem inúmeras libs que podem nos ajudar a logar:
○ Morgan (log de requisições http)
○ Bunyan
○ Winston
○ Bugsnag (serviço pago)
6. Logging pobre
● Escrever testes automatizados com JavaScript e
Node.js não tem custo alto (é fácil começar a testar);
● Existem muitas ferramentas e muito conteúdo na
internet mostrando como testar com Node.js;
○ Exemplo de tutorial “getting started” de como
testar com Node.js: TDD com Node.js + Mocha + Chai
7. Não escrever testes
● Ferramentas de testes mais utilizadas pelo mercado
e pela comunidade open-source:
○ Testing frameworks: Mocha, Jest, Jasmine…
○ E2E testing libraries: Selenium, Cypress,
Puppeteer...
○ Assert libraries: Chai, Expect, Should.js...
○ Factories: Faker.js, Factory Girl...
○ Code coverage: Istanbul
7. Não escrever testes
8. Não usar linter (analisador sintático)
9. Debuggar com console.log
● Uma alternativa: https://www.npmjs.com/package/debug
9. Debuggar com console.log
● Vantagens da lib debug:
○ Reaproveitamento de debug
○ Environment DEBUG ($ export DEBUG=* & node app.js)
○ Controlar o que é debugado através do valor passado em DEBUG
9. Debugar com console.log
Obrigado!
@fernandohenriques

Más contenido relacionado

La actualidad más candente

Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016Renato Groff
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsersGustavo Bellini Bigardi
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Renato Groff
 
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017Renato Groff
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureGiovanni Bassi
 
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geralRenato Groff
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018Renato Groff
 
Canal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorCanal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorGustavo Bellini Bigardi
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 

La actualidad más candente (20)

Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
 
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018
 
Canal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorCanal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com Blazor
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 

Similar a 9 erros que desenvolvedores Node.js cometem

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Max Claus Nunes
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04Ale Uehara
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 

Similar a 9 erros que desenvolvedores Node.js cometem (20)

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Node js
Node jsNode js
Node js
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 

Más de Fernando Henriques

A importância de padronizar nosso CSS
A importância de padronizar nosso CSSA importância de padronizar nosso CSS
A importância de padronizar nosso CSSFernando Henriques
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Fernando Henriques
 
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)Fernando Henriques
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactFernando Henriques
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactFernando Henriques
 
Introdução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIsIntrodução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIsFernando Henriques
 
Rails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzRails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzFernando Henriques
 

Más de Fernando Henriques (7)

A importância de padronizar nosso CSS
A importância de padronizar nosso CSSA importância de padronizar nosso CSS
A importância de padronizar nosso CSS
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software
 
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: React
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: React
 
Introdução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIsIntrodução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIs
 
Rails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzRails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luz
 

9 erros que desenvolvedores Node.js cometem

  • 1. 9 erros que desenvolvedores Node.js cometem Inclusive eu. :)
  • 2. Fernando Henriques ● Desenvolvedor 10+ anos ● Senior Full Stack Developer ● JavaScript, Ruby, PHP e Java ● Front-end 💓 3000 github.com/fernandohenriques
  • 3. ● Hot reload ○ Nodemon ○ node-supervisor ○ Forever 1. Não utilizar development tools
  • 4. Nome da empresa 1 1. Não utilizar development tools 1.2 Automatic browser refresh ○ Três steps: 1) Watch; 2) Enviar mensagem para os clientes conectados; 3) Page reload. ○ Libs úteis ■ watch - to watch for file changes ■ sendevent - server-sent events ■ uglify-js - for minifying the client-side JavaScript files
  • 5. ● Se você não está trabalhando com workers (>12), o Node.js é single thread (usa um core de CPU) ● Exemplos de como você pode ocupar a sua thread inteira e, assim, bloquear o evento loop acidentalmente: ○ Parsear um json gigante com JSON.parse; ○ Imprimir um output muito grande de uma só vez. 2. Bloquear o event loop
  • 6. ● Soluções possíveis: ○ Monitorar o event loop ■ https://www.npmjs.com/package/blocked ○ Entender e respeitar as limitações do Node.js ○ Rodar sua aplicação em mais de um core ○ Estudar worker e worker pool 2. Bloquear o event loop
  • 7. ● Ou: Pense bem antes de usar async/await 3. Mau uso do event loop
  • 8. ● Mesmo código, usando async/await de forma mais inteligente: 3. Mau uso do event loop
  • 9. 4. Usar let desnecessariamente
  • 12. ● Existem inúmeras libs que podem nos ajudar a logar: ○ Morgan (log de requisições http) ○ Bunyan ○ Winston ○ Bugsnag (serviço pago) 6. Logging pobre
  • 13. ● Escrever testes automatizados com JavaScript e Node.js não tem custo alto (é fácil começar a testar); ● Existem muitas ferramentas e muito conteúdo na internet mostrando como testar com Node.js; ○ Exemplo de tutorial “getting started” de como testar com Node.js: TDD com Node.js + Mocha + Chai 7. Não escrever testes
  • 14. ● Ferramentas de testes mais utilizadas pelo mercado e pela comunidade open-source: ○ Testing frameworks: Mocha, Jest, Jasmine… ○ E2E testing libraries: Selenium, Cypress, Puppeteer... ○ Assert libraries: Chai, Expect, Should.js... ○ Factories: Faker.js, Factory Girl... ○ Code coverage: Istanbul 7. Não escrever testes
  • 15. 8. Não usar linter (analisador sintático)
  • 16. 9. Debuggar com console.log
  • 17. ● Uma alternativa: https://www.npmjs.com/package/debug 9. Debuggar com console.log
  • 18. ● Vantagens da lib debug: ○ Reaproveitamento de debug ○ Environment DEBUG ($ export DEBUG=* & node app.js) ○ Controlar o que é debugado através do valor passado em DEBUG 9. Debugar com console.log