- 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
- instalar o CORS
-
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);