1
resposta

versao de producao vs versao dev

Saudações, quando rodo a aplicação com npm start o middleware de autorizacao não funciona, quando rodo com npm run dev o middleare funciona, porque isso?

1 resposta

Boa tarde Felipe, tudo certo?

Vou explicar como funcionam os scripts do npm e como você pode conferir o que está acontecendo:

Os projetos que utilizam o npm como gerenciador de pacote precisam ter um arquivo chamado package.json. Nesse arquivo ficam informações do projeto, como o nome, autor, versão, descrição e scripts que podem ser executados em diversas etapas do projeto. Existem diversos outros campos que são explicados na documentação do npm.

Aqui está o conteúdo do package.json que foi utilizado no projeto da aula:

{
  "name": "blog-do-codigo",
  "version": "1.0.0",
  "description": "Um blog simples em Node.js",
  "main": "server.js",
  "scripts": {
    "dev": "nodemon server.js",
    "lint": "eslint ./src/** app.js database.js rotas.js server.js"
  },
  "license": "ISC",
  "dependencies": {
    "accesscontrol": "^2.2.1",
    "bcrypt": "^3.0.8",
    "body-parser": "^1.19.0",
    "dotenv": "^8.2.0",
    "esdoc": "^1.1.0",
    "esdoc-standard-plugin": "^1.0.0",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "moment": "^2.26.0",
    "nodemailer": "^6.4.8",
    "passport": "^0.4.1",
    "passport-http-bearer": "^1.0.1",
    "passport-local": "^1.0.0",
    "redis": "^3.0.2",
    "sqlite3": "^4.2.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.2",
    "eslint": "^7.10.0",
    "eslint-config-standard": "^14.1.1",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": "^4.0.1"
  }
}

Eu vou recortar a parte que nos interessa, que é o campo scripts:

"scripts": {
    "dev": "nodemon server.js",
    "lint": "eslint ./src/** app.js database.js rotas.js server.js"
  },

Do lado esquerdo fica qual é o atalho que deve ser chamado após npm run e do lado direito é declarado o que vai ser chamado quando for chamado. Ou seja, ao chamar npm run dev o que vai acontecer de verdade no seu terminal é a execução do comando nodemon server.js. Essa ferramenta nos permite uniformizar os comandos para que a forma de realizar algumas ações seja similar independente da arquitetura do projeto em específico.

E o comportamento padrão do comando npm start é executar node server.js na pasta raiz do projeto caso ele não seja explicitado no package.json. Creio que a chamada npm start que não tenha um script explicitado no package.json tenha algum outro efeito colateral que está afetando o seu middleware. Sugiro fazer a alteração seguinte no seu package.json e tentar novamente:

"scripts": {
    "start": "node server.js",
    "dev": "nodemon server.js",
    "lint": "eslint ./src/** app.js database.js rotas.js server.js"
  },

Também sugiro a leitura da documentação sobre rodar scripts no npm. Qualquer coisa estarei no aguardo.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software