Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no npm start após alterações em rotas.js

Boa noite.

Abaixo está o código de rotas.js:

const db = require('../../config/database');

module.exports = (app) => {
    app.get('/', function(requisicao, resposta) {
        resposta.send('<html><head><meta charset="utf-8"><title>HTML Tutorial</title></head><body><h1>Casa do Código</h1></body></html>');
    });

    app.get('/livros', function(requisicao, resposta) {
        db.all('SELECT * FROM livros', function(erro, resultados) {

        });

        resposta.marko(
            require('../views/livros/lista/lista.marko'),
            {
                livros: resultados
            }
        );
    });
};

Depois que, no cmd faço um "npm start" e boto pra rodar o http://localhost:3000/livros aparece a seguinte mensagem (tanto no browser quanto no prompt:

ReferenceError: resultados is not defined
    at c:\NodeJS\CasaDoCodigo\scr\app\rotas\rotas.js:20:25
    at Layer.handle [as handle_request] (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\layer.js:95:5)
    at next (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\layer.js:95:5)
    at c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\index.js:335:12)
    at next (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\index.js:275:10)
    at expressInit (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\middleware\init.js:40:5)
    at Layer.handle [as handle_request] (c:\NodeJS\CasaDoCodigo\node_modules\express\lib\router\layer.js:95:5)

Alguma idéia do que pode ser?

1 resposta
solução!

Fala aí Sanderson, tudo bem? Acho que o problema está na sua função:

app.get('/livros', function(requisicao, resposta) {
    db.all('SELECT * FROM livros', function(erro, resultados) {

    });

    resposta.marko(
        require('../views/livros/lista/lista.marko'),
            {
                livros: resultados
            }
    );
});

Veja que dentro do resposta.marko você está tentando devolver o resultados como valor de livros, porém, os resultados existem apenas dentro da função db.all.

Portanto, seu código de resposta.marko deve estar dentro de db.all:

app.get('/livros', function(requisicao, resposta) {
    db.all('SELECT * FROM livros', function(erro, resultados) {
resposta.marko(
        require('../views/livros/lista/lista.marko'),
            {
                livros: resultados
            }
        );
    });
});

Algo nesse sentido.

Espero ter ajudado e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software