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

ReferenceError - body is not defined

Pessoal estou com uma dúvida, dei uma olhada no código diversas vezes mas não encontrei uma solução até agora, poderiam me ajudar?

Todas as páginas que acesso no meu servidor local estão funcionando. O problema ocorre na pagina http://localhost:3000/livros/form Justamente após o click no botão "Salvar" que aciona o método "post" dos livros que adicionei e redireciona para a pagina /livros.

Porém quando clico no botão Salvar, o servidor crasha exibindo esse erro:

ReferenceError: body is not defined
    at C:\Users\Felipe\Desktop\nodeproj\src\app\routes\routes.js:39:26
    at Layer.handle [as handle_request] (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Felipe\Desktop\nodeproj\node_modules\express\lib\router\index.js:275:10)
    at C:\Users\Felipe\Desktop\nodeproj\node_modules\body-parser\lib\read.js:130:5
    at invokeCallback (C:\Users\Felipe\Desktop\nodeproj\node_modules\body-parser\node_modules\raw-body\index.js:224:16)

Obrigado desde já!

3 respostas

Você poderia postar a parte do código pra gente ver o que ele está acusando o erro, por favor? :)

O erro parece estar ocorrendo nas rotas:

const LivroDao = require("../infra/livro-dao")
const db = require("../../config/database")


module.exports = (app) => {
    app.get("/", function(req, resp){
        resp.send(
        `
            <html>
                <head>
                    <meta charset="utf-8">
                </head>
                <body>
                    <h2> Pagina principal </h2>
                </body>
            </html>
        `
        );
    });

    app.get('/livros', function(req, resp) {

        const livroDao = new LivroDao(db);
        livroDao.lista()
                .then(livros => resp.marko(
            require('../views/livros/lista/lista.marko'),
            {   
                livros: livros
            }
        ))
        .catch(erro => console.log(erro))
    });

    app.get('/livros/form', function(req, resp) {
         resp.marko(require('../views/livros/form/form.marko'));
    });

//foi acusado erro no console.log dessa parte
    app.post("/livros", function(req, resp) {
        console.log(req, body);
        const livroDao = new LivroDao(db);
        livroDao.adiciona(req.body)
            .then(resp.redirect("/livros"))
            .catch(erro => console.log(erro));
    });
};
solução!

Felipe, boa tarde!

Isso está pode estar ocorrendo pois ao dar console.log() você está colocando req, body como se o body fosse uma variavel separada, mas ela é uma propriedade do req, sendo assim é necessário ao dar o console.log usar o .

Ficando assim:

console.log(req.body);

Espero ter ajudado e bons estudos!