1
resposta

Meu código apresenta a mensagem: Error [ERR_STREAM_WRITE_AFTER_END]

Depois de instalar o modulo Express Validator e inserir o código abaixo o aplicação ta apresentando do seguinte erro:

Error [ERR_STREAM_WRITE_AFTER_END]: write after end at write_ (httpoutgoing.js:572:17) at ServerResponse.write (httpoutgoing.js:567:10) at BufferedWriter.flush (C:\Users\PAULO\Documents\Projeto JS\node\casadocodigo\node_modules\marko\src\runtime\html\BufferedWriter.js:21:27)

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

 app.post('/acordos', [
        check('titulo').isLength({ min: 5 }).withMessage('O título precisa ter no mínimo 5 caracteres!'),
        check('matricula').isLength({ min: 5 }).withMessage(('A matricula precisa ter um valor válido!')
    ], function(req, resp) {

        const acordoDao = new AcordoDao(db);

        const erros = validationResult(req);
        if (!erros.isEmpty()) {
            return resp.marko(
                require('../views/acordos/from/from.marko'),
                { 
                    acordo: {}, 
                    errosValidacao: erros.array()
                }
            );
        }

        acordoDao.adiciona(req.body)
                .then(resp.redirect('/acordos'))
                .catch(erro => console.log(erro));

    });
1 resposta

Olá Paulo José,

O Problema está acontecendo pois você está dando redirect em um resp que já teve o marko chamado nele.

esse bloco aqui seu:

        acordoDao.adiciona(req.body)
                .then(resp.redirect('/acordos'))
                .catch(erro => console.log(erro));

deveria estar dentro de um else, não?