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

TypeError: app.infra.connectionFactory is not a function

O meu código está identico ao do curso, porem apresenta este erro, oque pode esta ocorrendo:

var express = require('express');
var load = require('express-load');

module.exports = function() {

    var app = express();

    app.set('view engine', 'ejs');
    app.set('views', './app/views');

    console.log("Estou sendo chamado");

    load('routes', {cwd: 'app'})
        .then('infra')
        .into(app);

    return app;
};

Estrutura do meu projeto:

app
     infra
        connectionFactory.js
     routes
        produtos.js
     views
        produtos
            lista.ejs
config
node_modules
5 respostas

Cola o código do connectionFactory.js pra gente dar uma olhada Weberson?

Esta identico ao do curso:

var mysql = require('mysql');

function createDBConnection(){
    return mysql.createConnection({
                host:'localhost',
                user:'root',
                password:'123456',
                database:'casadocodigo_nodejs'
          });

}

module.exports = function(){
    return createDBConnection();
}

Certo, agora me mostra onde você está o trecho de código que tem a seguinte linha:

app.infra.connectionFactory()

Esta desta forma:

module. exports = function(app) {
    app.get("/produtos", function(req, res) {

    var connection = app.infra.connectionFactory();

    connection.query('select * from livros', function(erros, resultado){
        res.render('produtos/lista',{lista: resultado});

        });

        connection.end();
     });
}
solução!

Weberson, o erro que está acontecendo é por que você está exportando a execução direta da função nesse trecho do connectionFactory.

module.exports = function(){
    return createDBConnection();
}

Isso faz com que o retorno seja um objeto direto da conexão, e não a função de conexão em si. Remove os parênteses que deve tudo funcionar bem.

module.exports = function(){
    return createDBConnection;
}