1
resposta

erro no servidor

faço como esta na aula e sempre da erro no servidor, fiz tanto no meu arquivo , quanto no do professor e sempre e me mostra a pagina de erro de servidor

class LivroController
{

    lista()
    {
       return 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));
        };

    }

}

module.exports = LivroController

insira seu código aqui

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

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

const livroC = new livro();

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

    app.get('/livros', livroC.lista())

    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(livro => 
                    resp.marko(
                        require('../views/livros/form/form.marko'), 
                        { livro: livro }
                    )
                )
                .catch(erro => console.log(erro));
    });

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

        const erros = validationResult(req);

        if (!erros.isEmpty()) {
            return resp.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));
    });
};

consegui resolver , mas podem me informar qual a difrença entre o require e import ? achei que o require fosse tipo uma copia do arquivo para onde ele era requirirdo , algo parecido com o php

1 resposta

Oi, Luan, tudo bem?

O Import e o Require são duas formas diferentes de importar e exportar módulos em Javascript. O require foi adotado pelo Node definido pelo CommonJs. Já o import é da versão ES6, então, não só o browser mas como também o Node pode usar.

O uso do import pode ser feito assim :

import { Livro } from '../models/Livros.js';

Aqui eu estou exportando o módulo Livro do arquivo Livro.js.

O Require assim como o Import fazer importações de módulo, podendo ser vários ou somente um.

Para saber mais sobre o import: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/import