Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Erro com arquivo cliente-android

Mesmo erro que foi solucionado, só que o servidor está online, eu consigo ver o phpMyadmin, com o comando nodemon app, roda a aplicação, mas não funciona o comando node cliente-android. js.

Em qual diretório esse arquivo de ser criado?

events.js:141 throw er; // Unhandled 'error' event ^

Error: connect ECONNREFUSED 127.0.0.1:3000 at Object.exports._errnoException (util.js:907:11) at exports._exceptionWithHostPort (util.js:930:20) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1077:14)

produtos.js

module.exports = function(app) {
   var listaProdutos = function(req,res){
       var connection = app.infra.connectionFactory();
        var produtosBanco = new app.infra.ProdutosDAO(connection);

        produtosBanco.lista(function(erros, resultados){
             res.format({
                html: function(){
                    res.render("produtos/lista",{lista:resultados});
                },
                json: function(){
                    res.json(resultados);
                }
            });
        });

        connection.end();   
   };


    app.get("/produtos", listaProdutos);       

    app.get('/produtos/form', function(req,res){
        res.render('produtos/form');
    });
    app.post('/produtos/salva', function(req,res){

        var produto = req.body;
//        console.log(produto)

        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produto, function(erros, resultados){
            res.redirect('/produtos');
        });
    })
}

cliente-android.js

var http = require('http');

var configuracoes = {
    hostname: 'localhost',
    port: 3000,
    path: '/produtos',
    headers: {
        'Accept': 'application/json'
    }
};

http.get(configuracoes, function(res){
    console.log(res.statusCode);
    res.on('data', function(body){
        console.log('Corpo:' +body);
    });
});
10 respostas

Parece que seu servidor não está rodando na porta 3000. Lembre que pra rodar o cliente, o servidor tem que tá de pe.

Eu vi a resposta da outra dúvida, mas não é isso, porque se fosse quando eu digito node app não estaria rodando, certo?

Ele roda e aparece o dados corretamente, o que não funciona é esse arquivo novo que foi criado.

Em qual pasta esse arquivo deve ficar?

O arquivo do código cliente só precisa estar na raiz do seu projeto. O erro que vc colocou indica que não tem servidor rodando na porta 3000... Vc pode ter subido em outra porta... Insisto nisso, pq geralmente a solução mais simples é a solução real.

Entendi, os outros exercícios vão precisar disso ?

É estranho, porque estou utilizando o wamp e ele fica com o icone verde quando está online e aparece Wampserver online.

Inclusive quando eu clico em localhost no menu do Wamp ele abre a página localhost.

Como eu posso alterar a porta ou verificar se ela está sendo utilizada?

O engracado eh que wamp sobe um servidor apache, provavelmente na porta 80. Eu não tô entendendo o que tem a ver com o node.

Eu fiz um teste e mudei um pouco o código do http, eu tinha uma página na pasta www do wamp e quando eu tirei o path e a porta, o http, leu a estrutura do arquivo html que estava na pasta www.

Por ser wamp tem que estar dentro desse diretório ou deveria ler a porta, o arquivo e ler?

Porque o arquivo app.js funciona corretamente no localhost:3000/produtos.

Talvez eu tenha que desinstalar o wamp, o problema é que ao instalar o mysql, ele não separou as pastas, simplesmente atualizou o mysql do wamp.

Gisele, são duas coisas distintas... wamp é para vc rodar aplicações php, não tem a ver com aplicações javascript que rodam sobre o node. Bom, se tiver eu não conheço :(. Por isso que eu não estou entendendo a dúvida..

é mais simples... rode com node app para subir a aplicação e depois execute cliente-android.

solução!

ok. Só que quando eu utilizo o node app, ele trava a linha de comando porque o servidor está rodando, como eu executo o cliente.

Já resolvi, eu abri duas janelas de prompt.

Abre outro aba no terminal e executa.

Não tinha visto a última resposta, pelo vídeo eu não percebi se tinha uma ou duas abas rodando e como eu estou utilizando o mysql do wamp, achei que servia para a conexão.

Então os arquivos do node para funcionar, tem que estar rodando o app separado.