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

req.assert is not a function

Pessoal, boa noite! Estou realizando o curso de Node.JS e me deparei com uma situação, onde a biblioteca do curso do express-validator está na 2.20.8 e estou utilizando a última versão, com isso ao tentar utilizá-lo gera o erro abaixo:

TypeError: req.assert is not a function                                                                      
    at C:\Dev\Projetos\payfast\controllers\pagamentos.js:11:13                                               
    at Layer.handle [as handle_request] (C:\Dev\Projetos\payfast\node_modules\express\lib\router\layer.js:95:
5)                                                                                                           
    at next (C:\Dev\Projetos\payfast\node_modules\express\lib\router\route.js:137:13)                        
    at Route.dispatch (C:\Dev\Projetos\payfast\node_modules\express\lib\router\route.js:112:3)               
    at Layer.handle [as handle_request] (C:\Dev\Projetos\payfast\node_modules\express\lib\router\layer.js:95:
5)                                                                                                           
    at C:\Dev\Projetos\payfast\node_modules\express\lib\router\index.js:281:22                               
    at Function.process_params (C:\Dev\Projetos\payfast\node_modules\express\lib\router\index.js:335:12)     
    at next (C:\Dev\Projetos\payfast\node_modules\express\lib\router\index.js:275:10)                        
    at Object.<anonymous> (C:\Dev\Projetos\payfast\node_modules\express-validator\src\middlewares\check.js:23
:13)                                                                                                         

Após ler a documentação da API https://express-validator.github.io/docs/index.html, verifiquei que é preciso importa-la de outra forma.

Ajustei meu código e está funcionando, porém não consigo utiliza-lo, conforme orientado no curso no arquivo custom-express.js, onde o express-validator é importado apenas neste arquivo.

custom-express.js

const express = require('express');
const consign = require('consign');
const bodyParser = require('body-parser');
const { check } = require('express-validator');

module.exports = function(){
    const app = express();

    app.use(bodyParser.urlencoded({extended:true}));
    app.use(bodyParser.json());

    app.use(check());

    consign()
        .include('controllers')
        .then('persistencia')
        .into(app);

    return app;

pagamentos.js - Neste arquivo foi necessário re-importar o express-validator

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

module.exports = function(app) {
    app.get('/pagamentos', function(req, res){
        console.log('Recebida requisição de teste na porta 3000');
        res.send('Req Enviada.OK');
    });

    app.post('/pagamentos/pagamento', [
        check('forma_de_pagamento').notEmpty().withMessage('Forma de Pagamento é obrigatório!'),
        check('valor').notEmpty().isFloat().withMessage('Valor é obrigatório e decimal!')
        ], (req, res) => {

        const pagamento  = req.body;

        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            console.log('Temos Erros: ', errors);
            return res.status(422).json({ errors: errors.array() });
        }

Alguém poderia me orientar como fazer?

3 respostas

Bom dia, Cleberson! Como vai?

Eu fiquei em dúvida numa coisa! Pq vc criou um middleware ao fazer app.use(check()) no arquivo custom-express.js? Não tenho certeza, mas me parece que essa linha está incorreta. Outra coisa, qual é a linha 11 do arquivo C:\Dev\Projetos\payfast\controllers\pagamentos.js? Vc poderia destacar ela pra mim, por favor?

Observação importante: O ideal nesses casos é vc terminar o curso primeiro utilizando as mesmas versões das bibliotecas utilizadas durante as aulas. Justamente pra que vc possa terminar o curso com sucesso e absorver tudo conteúdo pra somente depois se aventurar com as novas versões.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

solução!

Gabriel, boa noite!

Passei a usar as bibliotecas na mesma versão das citadas no curso e deu certo.

Abraços e obrigado.

Excelente, Cleberson! Esse é realmente o ideal para que vc consiga finalizar o curso numa boa!

Sempre que precisar de alguma ajuda é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!

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