Projeto desenvolvido com instruções de Alexia Pereira na trilha de estudo do Bootcamp "Eduzz Fullstack Developer #2" da dio.me.
Link da base utilizada neste projeto: alexiadorneles/url-shortener-dio.
npm installnpm run dev//para rodar versão de desenvolvimentonpm run build// para rodar build e versão de produção
Para configurar seu banco de dados MongoDB, basta atualizar a variável de ambiente MONGO_STRING_CONN que está no arquivo .env com sua string connection. A string normalmente é fornecida pelo provedor de serviço do banco de dados.
Abaixo seguem modificações feitas em relação ao projeto base:
- Criado o método
listpara listar todas as URLs já encurtadas pela aplicação, utilizando o endpointGET /; - Criado arquivo
.envcom variávelMONGO_STRING_CONNpara guardar a string de conexão ao banco, a URL e a porta que a aplicação utilizará; - Criado o arquivo
.env.examplecomo exemplo (template) do arquivo.envvisto que este não ficará disponível no repositório remoto (GitHub); - Foi criada condição no arquivo
Constants.tsdo pacoteconfigpara evitar salvar porta quando não estiver em local host, no Heroku, mesmo setando a variável PORT, o mesmo gerava valores aleatórios; - No métido
listdoURLController, foi criado um forEach para que o atributoshortURLesteja alinhado com o servidor (localhost, Heroku etc).
Endpoints da API:
- Encurtar URL:
POST /shorten, com o JSON:
{
"originURL": "https://exampleurl.com"
}- Listar todas as URLs já encurtadas:
GET / - Recuperar/Redirecionar para URL original:
GET /{hash}
Projeto hospedago no Heroku: url-shortener-didi.herokuapp.com
Para hospedar o projeto no Heroku tive que realizar os seguintes passos:
- 1- No arquivo
package.jsonfoi adicionado o atributostartdentro descripts:
"start": "node dist/index.js"- 2- Foi adicionado um novo item, o
enginetambém nopackage.json, contendo as versões no npm e node:
"engines": {
"npm": "8.3.0",
"node": "14.18.0"
},- 3- Foram adicionadas as variáveis de ambiente no Heroku, sendo elas:
| KEY | VALUE |
|---|---|
| NODE_MODULES_CACHE | false |
| USE_NPM_INSTALL | true |
Observações:
- Não esquecer de criar as variáveis de ambiente do arquivo
.envque utilizou no projeto local nas configurações do Heroku; - Caso tenha atualizado as versões do npm ou node no projeto local, então deve-se alterar as versões mencionadas no passo 2. Para confirmar a versão, basta rodar os comandos
npm -venode -vna pasta do projeto.
Fonte: When NPM miss with Heroku, How To Solve (npm ERR! Failed at the start script).
Links Interessantes: