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

Erro na url /produtos (500 - Internal Server Error) quando utilizo MySQL

Olá amigos, Estou com um erro 500 (Internal Server Error) e não consegui achar a solução. Quando faço a requisição da url /produtos aparece o seguinte erro no navegador

TypeError: require is not a function
   at /home/henrique/casadocodigo/app/routes/produtos.js:3:17
   at Layer.handle [as handle_request] (/home/henrique/casadocodigo/node_modules/express/lib/router/layer.js:95:5)
   at next (/home/henrique/casadocodigo/node_modules/express/lib/router/route.js:131:13)
   at Route.dispatch (/home/henrique/casadocodigo/node_modules/express/lib/router/route.js:112:3)
   at Layer.handle [as handle_request] (/home/henrique/casadocodigo/node_modules/express/lib/router/layer.js:95:5)
   at /home/henrique/casadocodigo/node_modules/express/lib/router/index.js:277:22
   at Function.process_params (/home/henrique/casadocodigo/node_modules/express/lib/router/index.js:330:12)
   at next (/home/henrique/casadocodigo/node_modules/express/lib/router/index.js:271:10)
   at expressInit (/home/henrique/casadocodigo/node_modules/express/lib/middleware/init.js:33:5)
   at Layer.handle [as handle_request] (/home/henrique/casadocodigo/node_modules/express/lib/router/layer.js:95:5)

Meu arquivo app.js

var app = require('./config/express')();
var rotas = require('./app/routes/produtos')(app);


app.listen(3000, function(require, response){
  console.log("servidor rodando");
});

Arquivo produtos.js

module.exports = function (app) {
  app.get('/produtos', function(require, response) {
    var mysql = require('mysql');
    var connection = mysql.createConnection({
      host:'localhost',
      user:'root',
      password:'123',
      database:'casadocodigo'
    });

    connection.query('select * from produtos', function(err, results) {
      console.log(err);
      response.send(results);
    });

    connection.end();
  });
}

obs: o nome da tabela criada no mysql é produtos. Agradeço a ajuda

2 respostas
solução!

Oi Henrique, você está utilizando require na função da rota, essa função é do node, utilize outro nome, por que ao usar require nesse lugar, a função require será rescrita pelo objeto de request passado pelo express. Use request, não require.

Entendeu? Espero ter ajudado

Muito obrigado Wanderson! Não prestei atenção nesse detalhe, era isso mesmo. Abraço!

module.exports = function (app) {
  app.get('/produtos', function(request, response) {
    var mysql = require('mysql');
    var connection = mysql.createConnection({
      host:'localhost',
      user:'root',
      password:'123',
      database:'casadocodigo'
    });

    connection.query('select * from produtos', function(err, results) {
      response.send(results);
    });

    connection.end();
  });
}