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

Error: Uncaught (in promise): Response with status: 0 for URL: null

Criei uma api rest em node.js seguindo um curso da alura. E quando tento integrá-la recebo o seguinte erro: Error: Uncaught (in promise): Response with status: 0 for URL: null at c (http://localhost:8100/build/polyfills.js:3:19752) at c (http://localhost:8100/build/polyfills.js:3:19461) at http://localhost:8100/build/polyfills.js:3:20233 at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15660) at Object.onInvokeTask (http://localhost:8100/build/vendor.js:4970:33) at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15581) at r.runTask (http://localhost:8100/build/polyfills.js:3:10834) at o (http://localhost:8100/build/polyfills.js:3:7894) at e.invokeTask [as invoke] (http://localhost:8100/build/polyfills.js:3:16823) at p (http://localhost:8100/build/polyfills.js:2:27648)

O link da minha api esta da seguinte forma: https://...herokuapp.com/lista Quando utilizo a api disponibilizada na aula não acusa nenhum erro.

Alguém poderia me ajudar. Desde já agradeço.

6 respostas

Olá,

Sua mensagem de erro já aponta o problema:

Response with status: 0 for URL: null

Você esta utilizando um valor nulo como endereço da API,.

Porém o endereço da api é valido. O endereço de minha api retorna um json

    this._http
      .get('https://apiteste1.herokuapp.com/lista')
      .map(res => res.json())
      .toPromise()
      .then(x => this.pagamentos = x);
  }

Sua API não esta correta. Ela abre através do navegador https://apiteste1.herokuapp.com/lista, mas via JavaScript dá erro.

Verifique só. Abra seu console do Chrome e execute este comando:

 fetch('https://apiteste1.herokuapp.com/lista')
.then(res => res.json())
.then(console.log)
.catch(console.log)

Você receberá esse erro:

.Failed to load https://apiteste1.herokuapp.com/lista: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.google.com.br' is therefore not allowed access. The response had HTTP status code 503. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Sua API não suporta CORS. Não faço ideia em qual linguagem ou plataforma você criou essa API, mas se ela não suportar CORS você jamais conseguirá acessá-la de um outro domínio. Então, dá uma estudada sobre CORS e veja como ativar isso em sua API. Isso existe desde que a Web é Web, é o famoso SOP (same origin policy).

Em suma, não é um problema do Ionic :) Resolve essa lance que vai dar tudo certo!

Sucesso e bom estudo meu aluno!

Muito Obrigado professor. Vou resolver

a api é em node.js

Desde já agradeço pela atenção.

solução!

Se é em node instala o modulo cors ativando-o como primeiro middleware.

Muito Obrigado Professor.

Deu certo.

Se caso alguém tiver duvida sobre o cors para o node.js, segue o link:

https://www.npmjs.com/package/cors#enable-cors-for-a-single-route