Estou com o MESMO problema do rapaz desse tópico: https://cursos.alura.com.br/forum/topico-typeerror-app-services-correiossoap-is-not-a-constructor-50605
Quando vou rodar o projeto aparece esse erro do título. Não sei se a versão do soap é diferente, mas tive um erro parecido no mesmo projeto em que eu tive que mudar a biblioteca, quer dizer, estava diferente do que vcs colocaram no curso (vcs mostraram 'restify', mas na verdade era 'restify-clients'). Só aí funcionou.
meu código:
var soap = require("soap");
function CorreiosSOAPClient() {
this._url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmxwsdl";
}
module.exports = function () {
return CorreiosSOAPClient;
}
CorreiosSOAPClient.prototype.calculaPrazo = function (args, callback) {
console.log("entrou")
soap.createClient(this._url, function (erro, cliente) {
console.log("Cliente soap criado");
//args: vem do método dentro do correios.js
cliente.CalcPrazo(args, callback);
});
}
module.exports = function (app) {
app.post('/correios/calculo-prazo', function (req, res) {
var dadosDaEntrega = req.body;
var correiosSOAPClient = new app.servicos.correiosSOAPClient().correiosSOAPClient
.calculaPrazo(dadosDaEntrega, function (erro, resultado) {
if (erro) {
res.status(500).send(erro);
return;
} else {
console.log("prazo calculado");
res.json(resultado);
}
});
});
};