Professor, eu sei que o problema deve ser um pequeno detalhe, mas estou perdendo muito tempo nele. Eu criei o projeto com a mesma estrutura de diretórios e baixei o autoload, porém não está querendo executar pois ele diz que app.infra.connectionFactory está undefined.
Segue código:
app.js
var app = require('./config/express')();
const HOST = 'http://localhost:';
const PORT = '3000';
app.listen(PORT, function() {
console.log('Server listening on ' + HOST + PORT + ' ...');
});
config/express.js
// Require ExpressJS
var express = require('express');
// Express Autoload
var load = require('express-load');
module.exports = function() {
// App
var app = express();
// Set view engine
app.set('view engine', 'ejs');
// Set views path
app.set('views', './app/views');
// Set autoload
load('routes', {cwd: 'app'})
.then('infra')
.into(app);
return app;
};
app/infra/connectionFactory.js
var mysql = require('mysql');
function createConnection() {
return mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'keymaster312',
database: 'dbAlura'
});
}
module.exports = function() {
return createConnection;
};
app/routes/produto.routes.js
module.exports = function(app) {
// Objeto de conexão com a base de dados
var conn = app.infra.connectionFactory();
// Rota para listagem de produtos
app.get('/produtos/lista', function(req, res) {
// Executando consulta
conn.query('select * from produtos', function(err, results) {
res.render('produtos/lista', {
lista : results
});
}).end();
});
}
ERRO:
C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\app\routes\produto.routes.js:8
var conn = app.infra.connectionFactory();
^
TypeError: Cannot read property 'connectionFactory' of undefined
at Object.module.exports (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\app\routes\produto.routes.js:8:26)
at C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\node_modules\express-load\lib\express-load.js:241:19
at iterate (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\node_modules\async\lib\async.js:131:13)
at Object.async.eachSeries (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\node_modules\async\lib\async.js:147:9)
at ExpressLoad.into (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\node_modules\express-load\lib\express-load.js:224:9)
at module.exports (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\config\express.js:21:10)
at Object.<anonymous> (C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\app.js:1:100)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
Será que eu estou perdendo algum detalhe? Pode me ajudar?
Obrigado!