4
respostas

problema com express-load

Estou tendo problemas com o seguinte código:

module.exports = function(app){
  var connection = app.infra.connectionFactory();

  app.get('/produtos', function(req, res){
    connection.query('SELECT * FROM produtos', function(erro, result){
      res.render('produtos/lista',{ lista : result });
    });
    connection.end();
  });
}

que aparece o seguinte erro quando executado no terminal:

/home/kabum/my/alura/node-js/casaDoCodigo/app/routes/produtos.js:2
  var connection = app.infra.connectionFactory();
                            ^

TypeError: Cannot read property 'connectionFactory' of undefined
    at Object.module.exports (/home/kabum/my/alura/node-js/casaDoCodigo/app/routes/produtos.js:2:29)
    at /home/kabum/my/alura/node-js/casaDoCodigo/node_modules/express-load/lib/express-load.js:247:19
    at iterate (/home/kabum/my/alura/node-js/casaDoCodigo/node_modules/async/lib/async.js:131:13)
    at Object.async.eachSeries (/home/kabum/my/alura/node-js/casaDoCodigo/node_modules/async/lib/async.js:147:9)
    at ExpressLoad.into (/home/kabum/my/alura/node-js/casaDoCodigo/node_modules/express-load/lib/express-load.js:230:9)
    at module.exports (/home/kabum/my/alura/node-js/casaDoCodigo/config/express.js:11:6)
    at Object.<anonymous> (/home/kabum/my/alura/node-js/casaDoCodigo/app.js:1:100)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)

as pastas estão nomeadas certo, não estou entendendo o erro.

os outros códigos:

// connectionFactory.js
var mysql = require('mysql');

function createDbConnection() {
  return mysql.createConnection({
    host : 'localhost',
    user : 'root',
    password: '%BeE$&7a',
    database: 'casadocodigo_nodejs'
  });
}

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

// app.js

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

app.listen(3000, function(){
  console.log("estou rodando.");
});

// express.js

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");

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

  return app;
};

// package.json
{
  "name": "casadocodigo",
  "version": "1.0.0",
  "description": "site da casa do codigo.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "carlos roberto",
  "license": "ISC",
  "dependencies": {
    "ejs": "^2.5.6",
    "express": "^4.15.3",
    "express-load": "^1.1.15",
    "mysql": "^2.13.0"
  }
}

// produtos.js 
// Foi o primeiro código que mostrei.
4 respostas

Opa, é ele não ta achando o código exportado. Tem como disponibilizar o seu projeto no github para eu dar uma olhada?

Tive o mesmo problema alguma solução para esse erro?

No meu caso foi trocar o código

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

Por

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

E depois usar normalmente:

var connection = app.db.connectionFactory();