Fazendo deploy no Heroku
Last updated
Last updated
Fazer o Deploy no Heroku de uma aplicação NestJS é relativamente simples, mas com alguns pequenos detalhes que são bem importantes.
Dessa vez, faremos o deploy de uma aplicação NestJS conectada a um banco de dados SQLite através do ORM Prisma.
Alterar o tipo de banco de dados e a URL para qualquer outro provedor será bem fácil através das variáveis de ambiente, então chega junto pra mais um conteúdo massa 😃
Abra o arquivo main.ts
e certifique-se de que a porta está devidamente configurada para acessar a variável de ambiente PORT
que o Heroku fornece:
src/main.ts
Procfile
Normalmente o Heroku utiliza o comando npm start
para rodar a aplicação. Por padrão, o Nest executa o comando nest start
quando executamos esse script, no entanto, para rodar a aplicação em produção, é recomendado executar os arquivos JavaScript da pasta dist
diretamente.
Para isso, precisamos criar um arquivo na raiz do projeto chamado Procfile
, com P
maiúsculo e sem nenhuma extensão de arquivo.
Procfile
Dessa forma, o Heroku sempre executará nossa aplicação através do comando npm run start:prod
.
start:prod
Por padrão, o Nest já vem com esse comando, que por baixa executa node dist/main
.
package.json
dist/main.ts
vs dist/src/main.ts
Em alguns casos, quando possuímos arquivos JavaScript ou TypeScript fora da pasta src
, a estrutura da pasta dist
mudará.
Certifique-se de que o arquivo main.js
, que foi compilado a partir do arquivo main.ts
está no caminho correto, indicado no script start:prod
.
Opção 1 (mais comum): dist/main.js
;
Opção 2 (quando tem arquivos JS ou TS fora da src
): dist/src/main.js
;
Opção 3 (mais incomum): outra localização, dependendo de onde estiver seu arquivo main.ts
.
Se o seu arquivo
main.js
estiver em uma localização diferente da que o Nest usa como padrão, certifique-se de atualizar no scriptstart:prod
.
Alguns exemplos de estrutura da pasta dist
dist
está sempre atualizadaÉ importante garantir que o Heroku fará o build da aplicação (para manter a pasta dist
sempre atualizada), portanto, devemos adicionar o script heroku-postbuild
no arquivo package.json
, informando para o Heroku sempre executar alguns comandos assim que passar da sua etapa de build
.
package.json
Agora que finalizamos a etapa de configuração, basta subir o projeto para o Heroku (através do GitHub ou da própria Heroku CLI) e tudo estará funcionando normalmente.
ATENÇÃO!
Caso a sua aplicação não funcione, pode ser que tenha algum erro adicional, seja no build ou na execução. ☹
1️⃣ Se o erro for em build, aparecerá a mensagem
Build failed
e você poderá visualizar os erros direto pelo site do Heroku.2️⃣ Se o erro for na execução e aparecer a mensagem
Application error
ao tentar acessar a URL gerada para o seu app, certifique-se de configurar a Heroku CLI e executar o comandoheroku logs
, para conseguir verificar qual foi o problema e tentar corrigir.🛠 Saiba como configurar a Heroku CLI no vídeo: https://www.youtube.com/watch?v=n4wFqLm98x0
Curtiu? Ficou fácil fazer o deploy de uma aplicação NestJS no Heroku, não?!
Agora não tem mais desculpa pra ter a sua aplicação rodando na nuvem, em um serviço completamente gratuito!
Um beijo pra vcs. 🧡