BrasilAPI / cep-promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e outros (Node.js e Browser)
MIT License
2.88k stars 316 forks source link

async/await React Native #223

Open hadnet opened 3 years ago

hadnet commented 3 years ago

Quando tento usar async/await diretamente, lança o erro:

 Possible Unhandled Promise Rejection (id: 0):
TypeError: (0, _cepPromise.cep) is not a function. (In '(0, _cepPromise.cep)(86055645, {
                providers: ['correios']
              })', '(0, _cepPromise.cep)' is undefined)

Criando um async, funciona. Portanto, acredito que o cep-promise deveria ser rearranjado para funcionar com async/await diretamente.

    async function CEP(CEP: string) {
      return new Promise(resolve => {
        cep(CEP, {timeout: 5000, providers: ['brasilapi']}).then(response => resolve(response));
      });
    }

    const cepResponse = await CEP(userInfo.postal_code);
    console.log('cepResponse ', cepResponse);
bearkfear commented 3 years ago

Poderia dar mais contexto, a função superior que você está usando tem o prefixo async?

hadnet commented 3 years ago

Sim.

isaiasvallejos commented 3 years ago

Acredito que seja algum problema de import ou de compilação do React, porque acho que em teoria o cep-promise aceita async/await pois retorna uma Promise.

Consegue mostrar como você está importando?

felinto-dev commented 3 years ago

Acho que deveria ser

return cep(CEP, {timeout: 5000, providers: ['brasilapi']})... em vez

cep(CEP, {timeout: 5000, providers: ['brasilapi']})... não?

felinto-dev commented 3 years ago

Estou com o mesmo problema: https://github.com/BrasilAPI/cep-promise/issues/212

Na resposta da issue coloquei que achei uma solução, no entanto, estou usando um framework chamado Nest e lá não funciona import de jeito nenhum, mesmo usando o mesmo tsconfig.json

Lá tenho que fazer const cepPromise = require("cep-promise")

hadnet commented 3 years ago

Acho que deveria ser

return cep(CEP, {timeout: 5000, providers: ['brasilapi']})... em vez

cep(CEP, {timeout: 5000, providers: ['brasilapi']})... não?

Sim, mas desse jeito TS dispara erro pra tudo quanto é lado. Por isso digo que tem que ser rearranjado.

bearkfear commented 3 years ago

Acredito que a conversão para typescript será muito benéfica, se uma boa galerinha quiser eu posso fazer o PR. #169