3
respostas

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Esse erro ocorre quando eu cadastro um livro e era pra ir para a página de listagem de livros só que acaba mostrado a página de erro 500.

//router.js
const LivroDao = require('../infra/livro-dao');
const db = require('../../config/database');

const { check, validationResult } = require('express-validator/check');

module.exports = (app) => {
    app.get('/', function(req, resp) {
        resp.marko(
            require('../views/base/home/home.marko')
        );
    });

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

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

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

    app.get('/livros/form/:id', function(req, resp) {
        const id = req.params.id;
        const livroDao = new LivroDao(db);

        livroDao.buscaPorId(id)
                .then(livros => 
                    resp.marko(
                        require('../views/livros/form/form.marko'), 
                        { livro: livros }
                    )
                )
                .catch(erro => console.log(erro));
    });

    app.post('/livros', [
        check('titulo').isLength({ min: 5 }).withMessage('O título deve ser maior que 5'),
        check('preco').isCurrency().withMessage('O preço precisa ter um valor monetário válido')
    ], function(req, res) {
        console.log(req.body);
        const livroDao = new LivroDao(db);

        const erros = validationResult(req)

        if(!erros.isEmpty()) {
            return res.marko(
                require('../views/livros/form/form.marko'),
                { 
                    livro: {}, 
                    errosValidacao: erros.array() 
                }
            );
        }

        livroDao.adiciona(req.body)
                .then(resp.redirect('/livros'))
                .catch(erro => console.log(erro));
    });

    app.put('/livros', function(req, resp) {
        console.log(req.body);
        const livroDao = new LivroDao(db);

        livroDao.atualiza(req.body)
                .then(resp.redirect('/livros'))
                .catch(erro => console.log(erro));
    });

    app.delete('/livros/:id', function(req, resp) {
        const id = req.params.id;

        const livroDao = new LivroDao(db);
        livroDao.remove(id)
                .then(() => resp.status(200).end())
                .catch(erro => console.log(erro));
    });
};
3 respostas
//lista.marko
<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="/estatico/css/bootstrap.min.css" />
        <link rel="stylesheet" href="/estatico/css/fontawesome.min.css" />
        <link rel="stylesheet" href="/estatico/css/casadocodigo.css" />
    </head>
    <body>
        <header class="cabecalhoPrincipal">
            <div class="container">
                <div class="row align-items-center">
                    <div class="col-4">
                        <h1 class="logo"><img src="/estatico/imagens/logo-casadocodigo.svg" alt="Casa do Código" /></h1>
                    </div>
                    <div class="cabecalhoPrincipal-navegacao col-8">
                        <a href="#" class="login">
                            <i class="fas fa-sign-in-alt"></i>Login
                        </a>
                    </div>
                </div>
            </div>
        </header>
        <main class="conteudoPrincipal">
            <div class="container">
                <h1> Listagem de livros </h1>

                <table id="livros" class="table table-striped table-hover">
                    <thead class="thead-dark">
                        <tr>
                            <th>ID</th>
                            <th>Título</th>
                            <th>Preço</th>
                            <th>Editar</th>
                            <th>Remover</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr id="livro_${livro.id}" for (livro in data.livro)>
                            <td>${livro.id}</td>
                            <td>${livro.titulo}</td>
                            <td>${livro.preco}</td>
                            <td><a href="/livros/form/${livro.id}">Editar</a></td>
                            <td><a href="#" data-ref="${livro.id}" data-type="remocao">Remover</a></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </main>
        <footer class="rodape">
            <div class="container">
                <div class="row align-items-center">
                    <div class="col-4">
                        <img src="/estatico/imagens/logo-rodape.svg" class="logo-rodape" />
                    </div>
                    <div class="col-8">
                        <ul class="redesSociais">
                            <li><a href="http://www.facebook.com/casadocodigo" class="compartilhar-facebook" target="_blank">/CasaDoCodigo</a></li>
                            <li><a href="http://www.twitter.com/casadocodigo" class="compartilhar-twitter" target="_blank">@casadocodigo</a></li>
                        </ul>
                    </div>
                </div>
            </div>
        </footer>

        <script src="/estatico/js/remove-livro.js">
        </script>
    </body>
</html>

Boa noite, Lucas! Como vai?

No terminal do seu sistema operacional onde vc está executando a aplicação é exibida alguma mensagem de erro? Se sim, poderia colar ela aqui, por favor? Assim poderei te ajudar de forma mais efetiva.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia, professor. Não no terminal não aparece nenhum erro.