4
respostas

importando módulo via consign

Na aula 2, vídeo 18 do curso node js: inovando com javascript no backend, foi importado o módulo produtosBanco com o seguinte código:

var produtosBanco = app.infra.produtosBanco(connection);

Porém, se eu criar uma nova pasta app/dao com o arquivo daoProduto.js (não estou entrando no mérito da melhor forma de organizar), adicionar essa pasta no express-load, colocar o mesmo código utilizado no produtosBanco e tentar chama-lo no routes/produto :

//var produtosBanco = app.infra.produtosBanco(connection);
var dao = app.dao.daoProduto(connection);

esse código dá o seguinte erro: TypeError: Cannot read property 'daoProduto' of undefined.

Ou seja, ele só funciona quando utilizado dentro da pasta infra. Alguém saberia me informar como faço para importar esse novo módulo?

4 respostas

como ficou seu código de carregamento de módulos usando o express-load? ou a versão mais nova como vc colocou no título :).

olá Alberto. Então, meu código de carregamento ficou assim:

var express = require('express');
var consign = require('consign');
var bodyParser = require('body-parser');

module.exports = function() {
    var app = express();
    app.set('view engine', 'ejs');


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

    consign()
    .include('infra')
    .then('app/routes')
    .then('app/dao')
    .into(app);

    return app;
}

existe apenas uma diferença entre minha estrutura e a do curso: Na estrutura do curso, a pasta /infra está dentro da pasta app (app/infra); na minha estrutura, a pasta infra (/infra) está na raiz da aplicação e routes e dao estao dentro de /app. No mais o código está igual. Quando inicio o nodemon, o log informa que o consign conseguiu encontrar todos os arquivos indicados no carregamento.

Alguém?

Olá Thadeu, acho que um pouco tarde, mas só para ficar registrada a solução aqui, acredito que voce vai precisar mudar essa parte:

    .then('./routes')
    .then('./dao')

Assim, ao inves de buscar na pasta app, vai pegar na raiz.