Olá, tenho um repositório git com as pastas frontend e backend, o frontend feito com react e backend com express, não entendi muito bem como posso juntar os dois para fazer a hospedagem no mesmo site aqui na umbler, e gostaria de uma luz.
Olá, @Daniel_Gomes! Tudo bem?
Claro! Vou tentar explicar:
Acontece que um container NodeJS pode ter apenas 1 aplicação escutando na porta 3000. E essa porta é a única que é mapeada para fora do Container.
Tendo isso em vista, aplicações web que foram desenvolvidas em duas aplicações node diferentes tem as seguintes opções para poderem ser hospedadas com nós:
-
Colocar a aplicação em duas hospedagens diferentes.
Pode ser algo como o domínio principal hospedando o frontend, e um subdomínio api hospedando o backend. É uma solução bastante usada. -
Mas já que você não quer outra hospedagem, então é necessário fazer um “merge” das duas aplicações.
Basicamente, é preciso criar uma aplicação só, que escute na 3000. Essa aplicação será capaz de de responder tanto para rotas do backend quanto as do frontend.
Então se for acessado o/
, essa aplicação responderia com o seuindex.html
, por exemplo.
Já se for acessado o/api/v1/produtos
, por exemplo, daí cai na rota do backend que responde com o dado desejado
Oi, Thiago, tudo e você? Obrigado por responder! Vou optar pela segunda opção e fazer o Merge da aplicação. Obrigado!
Oi, Thiago, consegui fazer o merge da aplicação e aqui localmente funciona 100%, no entanto ao tentar dar deploy, no log aparece que não achou o módulo “knex”, ao verificar na pasta node_modules aqui na Umbler e comparando com a minha pasta local, não foi instalado todos os módulos, e não sei como posso resolver isso.
Seguindo o tutorial de configuração de uma aplicação react, modifiquei os scripts no package.json:
“start”: “node server”
“postinstall”: “npm run build”
Ah, certo!
O famoso módulo não encontrado
Isso normalmente acontece por o módulo não estar listado como dependência no package.json e/ou não foi executado o npm install depois de adicioná-lo.
No primeiro caso, bastaria dar um npm install no módulo pra instalá-lo e listá-lo como dependência e fazer um novo deploy
Já no segundo, normalmente significa que a aplicação não foi enviada para nós via Git Remote. Pois esse é o único método onde as dependências são instaladas automaticamente.
Para outros casos como deploy por sincronização com Github, FTP etc. é necessário instalar as dependências manualmente
Tenho um tutorial de alguns métodos que podem ser usados pra isso, se for o caso:
Daniel, tudo bem?
Cara, estou com o mesmo e não estou conseguindo fazer o ‘merge’, você poderia me explicar, se quiser me chamar no face, fico muito agradecido se puder brow.
EU nao recomendaria essa pratica, numero 2, FORTE acoplamento.