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

Erro no get

Estou com esse problema no terminal. Alguém sabe me dizer como resolver?

C:\Users\Seven\casadocodigo\app\routes\produtos.js:2

        app.get('/produtos',function(req,res){
           ^

TypeError: Cannot read property 'get' of undefined
    at module.exports (C:\Users\Seven\casadocodigo\app\routes\produtos.js:2:5)
    at Object.<anonymous> (C:\Users\Seven\casadocodigo\app.js:2:45)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:475:10)
    at startup (node.js:117:18)
    at node.js:951:3
9 respostas

Olá gilrcosta87, tudo bem ?

O erro que está sendo exibido ai para você, significa que o node, por algum motivo não conseguiu encontrar o método get, imagino que você não tenha baixado o express :

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

Abraços

Bom dia Matheus. Então, eu baixei o express já, esse arquivo é o mesmo que usei ontem pra estudar e estava tudo acontecendo corretamente, mas hoje quando abri pra continuar estudando tive esse erro.

Já analisei linha por linha em cada arquivo, porém não consigo achar o erro.

Consegue mostrar para gente os seus arquivos para gente conseguir dar uma clareada maior ?

Esse são meus arquivos até agora.

app.js

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

app.listen(3000,function(){
    console.log('servidor rodando');
});

express.js

var app = require('express')();
app.set('view engine','ejs');    
app.set('views', './app/views');

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

produtos.js

module.exports = function(app){
    app.get('/produtos',function(req,res){
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host:'localhost',
        user:'root',
        password:'1234gi',
        database:'casadocodigo_nodejs'
    });


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

    connection.end();
});
}

lista.ejs

<html>
    <body>
        <table>
            <tr>
                <td>id</td>
                <td>titulo</td>
                <td>descricao</td>
                <td>preco</td>
            </tr>
            <%for(var i=0;i<lista.length;i++) {%>
                <tr>
                    <td><%=lista[i].id%></td>
                    <td><%=lista[i].titulo%></td>
                    <td><%=lista[i].descricao%></td>
                    <td><%=lista[i].preco%></td>
                </tr>
            <%}%>
        </table>
    </body>
</html>

Imagino que no seu arquivo express.js devesse estar assim :


var app = require('express')();
app.set('view engine','ejs');    
app.set('views', './app/views');

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

A sua função está esperando um parâmetro, nisso acredito que o node não consiga pasasr.

Faz um teste dessa forma e fala para gente se deu certo.

Abraços

Eu escrevi desta maneira. E já tentei passando app como parâmetro na função.

solução!

Então, pelo arquivo que você passou ali em cima, no momento de exportar o app, que você faz no express.js, a sua função está recebendo como parâmetro um app que é retornado, imagino que o problema seja esse.

Da forma que te passei, ele deveria funcionar.

Deu algum problema ?

Abraços

Obrigado Matheus. Agora fiz isso e deu certo, mas eu tinha feito da outra vez e por algum motivo estava dando erro. Mas por hora isso está funcionando. Muito obrigado pela força.

Bons estudos, o que precisar pode abrir um novo tópico !

Abraços