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

TypeError: app.services.correiosSOAPClient is not a constructor

Ao tentar executar o client SOAP com o seguinte comando:

curl -X POST http://localhost:3000/correios/calculo-prazo -H "Content-type: application/json" -d @files/dadosDaEntrega.json

recebi o erro:

TypeError: app.services.correiosSOAPClient is not a constructor<

Os códigos das rotas e serviços são

module.exports = function(app) {

    app.post('/correios/calculo-prazo', function(req, res) {
        var dadosDaEntrega = req.body;

        var correiosSOAPClient = new app.services.correiosSOAPClient();
        correiosSOAPClient.calculaPrazo(dadosDaEntrega, function(erro, resultado) {
            if (erro) {
                res.status(500).send(erro);
                return;
            }
            console.log('prazo calculado');
            res.json(resultado);
        });

    });
}
var soap = require('soap');

function CorreiosSOAPClient() {
    this._url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?wsdl';
}

module.exports = function() {
    return CorreiosSOAPClient;
}

CorreiosSOAPClient.prototype.calculaPrazo = function(args, callback) {
    soap.createClient(this._url, function(erro, cliente) {
        console.log('cliente soap criado');
        cliente.CalcPrazo(args, callback);
    });
}
6 respostas

Boa noite, Ricardo! Como vai?

A única diferença do seu código para o código do instrutor é na linha a seguir! Vc fez assim:

var correiosSOAPClient = new app.services.correiosSOAPClient();

O instrutor escreveu servicos no lugar de services:

var correiosSOAPClient = new app.servicos.correiosSOAPClient();

Se vc está seguindo exatamente o código do instrutor, é possível que o erro esteja aí! Faça essa correção e veja se seu código funciona!

Grande abraço e bons estudos!

Gabriel,

Eu que decidi utilizar "services", coloquei o nome da pasta assim também.

Alguém consegue me ajudar?

Opa, Ricardo! Como vai?

Desculpe a demora! Então, esse código que vc postou aqui aparentemente está correto. Vc poderia compartilhar o seu projeto completo via github, dropbox ou google drive? Aí eu poderei dar uma olhada melhor no código e te ajudo!

P.S.: Não inclua a pasta node_modules no arquivo que vc for compartilhar.

solução!

Gabriel,

Quando ia subir o código pra te enviar descobri o problema hehe, na hora de criar o arquivo "correiosSOAPClient" que possui o módulo que possui o construtor do client SOAP e o calcula prazo, criei o arqui como "correiosSOAPClient..js" com os dois pontos no nome do arquivo rs, por isso dava erro na hora de instanciar.

Obrigado pela ajuda de qualquer maneira

Por nada, Ricardo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!