Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Erro

index.js

const customExpress = require ('./config/customExpress') const conexao = require('./infraestrutura/conexao')

conexao.connect((erro => { if(erro){ console.log(erro) } }))

const app = customExpress()

app.listen(3000, () => console.log('servidor rodanooo'))

8 respostas

conexao.js

const mysql = require('mysql')

const conexao = mysql.createConnection({ host: 'localhost', port: 3306, user: 'root', password: 'Maeeuteamos2', database: 'agenda-petshop' }) module.exports = conexao

customExpress.js

const express = require('express') const consign = require('consign') const bodyParser = require('body-parser')

module.exports = () => { const app = express()

app.use(bodyParser.urlencoded({extended:true}))
app.use(bodyParser.json())

consign()
    .include('controllers')
    .into(app)

return app

}

PS C:\Users\Rubinho\Desktop\Projeto node-js rest> npm start

desktop@1.0.0 start C:\Users\Rubinho\Desktop\Projeto node-js rest nodemon index.js

[nodemon] 2.0.12 [nodemon] to restart at any time, enter rs [nodemon] watching path(s): . [nodemon] watching extensions: js,mjs,json [nodemon] starting node index.js internal/modules/cjs/loader.js:883 throw err; ^

Error: Cannot find module 'mysql' Require stack:

  • C:\Users\Rubinho\Desktop\Projeto node-js rest\infraestrutura\conexao.js
  • C:\Users\Rubinho\Desktop\Projeto node-js rest\index.js at Function.Module.resolveFilename (internal/modules/cjs/loader.js:880:15) at Function.Module.load (internal/modules/cjs/loader.js:725:27) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at Object. (C:\Users\Rubinho\Desktop\Projeto node-js rest\infraestrutura\conexao.js:1:15) at Module.compile (internal/modules/cjs/loader.js:1063:30) at Object.Module.extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module.load (internal/modules/cjs/loader.js:769:14) at Module.require (internal/modules/cjs/loader.js:952:19) { code: 'MODULENOT_FOUND', requireStack: [ 'C:\Users\Rubinho\Desktop\Projeto node-js rest\infraestrutura\conexao.js', 'C:\Users\Rubinho\Desktop\Projeto node-js rest\index.js' ] } [nodemon] app crashed - waiting for file changes before starting...

Boa noite Rubens, tudo certo?

O erro indica que que o pacote mysql não foi instalado. Você pode tentar executar o comando npm install mysql no terminal dentro da pasta do seu projeto e depois tentar executar o projeto novamente.

Outra sugestão que eu daria é aproveitar essa situação para substituir o driver pelo mysql2, também trocando as linhas de importação por

const mysql = require('mysql2')

Pois esse driver aparenta ter uma implementação um pouco melhor e tende a dar menos erros dentro do curso.

Espero ter ajudado e bons estudos!

Windows PowerShell
Copyright (C) Microsoft Corporation. Todos os direitos reservados.

Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6

Oi, pessoal do PowerShell!!!
Oi, Rubinho
O carregamento de perfis pessoais e do sistema levou 1679ms.
PS C:\Users\Rubinho\Desktop\Projeto node-js rest> npm install mysql
npm WARN desktop@1.0.0 No description
npm WARN desktop@1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules\fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: 
PS C:\Users\Rubinho\Desktop\Projeto node-js rest> npm start

> desktop@1.0.0 start C:\Users\Rubinho\Desktop\Projeto node-js rest
> nodemon index.js

[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json  
[nodemon] starting `node index.js`
internal/modules/cjs/loader.js:883
  throw err;
  ^

Error: Cannot find module 'mysql2'
Require stack:
- C:\Users\Rubinho\Desktop\Projeto node-js rest\infraestrutura\conexao.js
- C:\Users\Rubinho\Desktop\Projeto node-js rest\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)        
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (C:\Users\Rubinho\Desktop\Projeto node-js rest\infraestrutura\conexao.js:1:15)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\Rubinho\\Desktop\\Projeto node-js rest\\infraestrutura\\conexao.js',   
    'C:\\Users\\Rubinho\\Desktop\\Projeto node-js rest\\index.js'
  ]
}
[nodemon] app crashed - waiting for file changes before starting...
solução!

Boa noite Rubens.

Me desculpe, eu não fui claro o suficiente na primeira mensagem. O mysql e o mysql2 são dois pacotes diferentes do npm. Então, para utilizar o pacote mysql2 você precisa executar

npm install mysql2

E isso deve resolver os seus problemas.

Bons estudos!

O meu estava apresentando este erro abaixo:

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Handshake.ErrorPacket (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\sequences\Handshake.js:123:18)
    at Protocol._parsePacket (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\Connection.js:88:28)
    at Socket.<anonymous> (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\Connection.js:526:10)
    at Socket.emit (events.js:315:20)
    at addChunk (internal/streams/readable.js:309:12)
    --------------------
    at Protocol._enqueue (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (D:\Alura\Rest com Node - Api com Express e MySQL\node_modules\Mysql\lib\Connection.js:116:18)
    at Object.<anonymous> (D:\Alura\Rest com Node - Api com Express e MySQL\index.js:4:9)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 
    at internal/main/run_main_module.js:17:47 {
  code: 'ER_NOT_SUPPORTED_AUTH_MODE',
  errno: 1251,
  sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
  sqlState: '08004',
  fatal: true
}

Mas consegui arrumar a conexão criando um novo usuario no workbench mudando o tipo de autenticação em: Users and Privileges, authentication Type: para: "STANDARD". depois de fazer essa mudança para o modo antigo de autenticação deu tudo certo. Mas gostaria de saber qual a forma de conexão, ou melhor, como resolver o problema acima?!!Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Boa noite André, tudo certo?

Isso acontece pois o driver do pacote npmmysql já espera uma forma diferente de autenticar os usuários. Você pode tentar utilizar o pacote mysql2 como eu sugeri lá em cima ou recriar o banco com essa solução que você já encontrou.

Caso você não consiga resolver mesmo utilizando esses métodos, eu recomendo abrir um novo tópico. Dado que este tópico já está marcado como solucionado e terá uma visibilidade menor para quem quiser dar apoio.

Espero ter ajudado e bons estudos!