Skip to content

Latest commit

 

History

History
109 lines (90 loc) · 3.57 KB

.steps.md

File metadata and controls

109 lines (90 loc) · 3.57 KB

Passos seguidos para iniciar o backend

  • startei o projeto
    • npm init
    • durante o init, alterei o nome do arquivo main para app.js, como sugerido na documentação do Express
  • criei o arquivo main do projeto
    • touch app.js
  • adicionei ao package.json "type": "module"
    • isso serviu para corrigir um erro que estava dando ao rodar o projeto, mais tarde
  • instalei o nodemon
    • npm install nodemon --save-dev
    • o nodemon serve para restartar a aplicação quando houver uma alteração nela
  • criei o script de start no package.json e configurei para usar o nodemon: "nodemon app.js"
  • instalei e configurei o babel pra permitir o uso de features do ECMAScript mais novas
    • npm install @babel/core @babel/node --save-dev
  • mudei o script de start no package.json para usar o babel: nodemon --exec babel-node --experimental-modules app.js
    • npm install @babel/preset-env --save-dev
  • criei um arquivo de configuração do babel
    • touch .babelrc
  • adicionei as seguintes linhas de configuração ao .babelrc:
{
  "presets": [
    "@babel/preset-env"
  ]
}
  • criei um arquivo .env na raiz do projeto para armazenar variáveis de ambiente

    • touch .env
  • adicionei a biblioteca dotenv para facilitar o uso do arquivo .env

    • npm install dotenv --save
  • adicionei ao arquivo main (src/app.js nesse caso) o import da biblioteca dotenv: import "dotenv/config.js";

    • esse import deve ficar acima dos demais imports de arquivos locais do projeto
  • instalei o Express

    • npm install express
  • adicionei o express aos imports do app.js

    • import express from 'express';
  • criei uma constante app no app.js que será um objeto Express usado

    • const app = express();
  • criei uma constante PORT no app.js para setar a porta usada pelo aplicativo

    • const PORT = process.env.PORT || 3000;
  • OPCIONAL para o caso de no futuro eu ter que lidar com o seguinte erro: "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3000/. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing)."

    • instalar o CORS
      • npm install cors
    • adicionar ao app.js
      • import cors from 'cors';
      • app.use(cors());
    • IMPORTANTE setar uma whitelist de domínios
  • adicionei o parser de dados em JSON ou URL encoded ao app.js

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
  • criei uma pasta onde ficarão arquivos relacionados aos modelos de dados
    • touch models
  • criei os arquivos index.js na pasta models
    • touch index.js
    • e populei ele com um user vazio, apenas para poder exportá-lo e incluí-lo no app.js
  • adicionei ao app.js o uso do diretório models e seu conteúdo
import models from './models';

app.use((req, res, next) => {
  req.context = {
    models,
  };
  next();
});
  • criei uma pasta onde ficarão arquivos relacionados às rotas do servidor
    • mkdir routes
  • criei os arquivos index.js e user.js na pasta routes
    • touch index.js user.js
  • criei uma rota básica para teste no user.js
import { Router } from "express";

const router = Router();

router.get("/", (req, res) => {
  return res.send(req.context.models.users);
});

export default router;
  • acrescentei o user.js ao index.js do routes, para ser usado no app.js
import user from "./user.js";

export default {
  user,
};
  • adicionei ao app.js as rotas contidas no diretório routes
    • import routes from "./routes";
    • app.use("/users", routes.user);