2017-08-15 1 views
4

J'utilise fetch() pour récupérer les données du serveur api. Mon erreur ressemble à ceci:fetch() fin inattendue de l'entrée

Uncaught (in promise) SyntaxError: Unexpected end of input at 
    fetch.then.blob. 

Pouvez-vous s'il vous plaît dites-moi ce que je fais mal.

const weatherAPi ='https://www.metaweather.com/api/location/523920'; 
fetch(weatherAPi, { 
    mode: 'no-cors' 
}).then(blob => blob.json()) 
    .then(data => console.log(data)) 
+0

Je ne vois cette erreur que lorsque je l'ai testé dans la console du navigateur – Rowland

+0

Le problème est que la réponse que vous obtenez n'est pas un json valide (il semble que c'est null) – nem035

Répondre

13

Une réponse à la demande de ressource no-cors transversale origine a une response type of 'opaque'. Si vous consignez la réponse avant d'essayer de la convertir en JSON, vous verrez un type de "opaque".

Les types opaques sont listed as "severely restricted".

Une réponse filtrée opaque est une réponse filtrée dont le type est « opaque », la liste des URL est la liste vide, l'état est égal à 0, le message d'état est la séquence d'octets vide, la liste d'en-tête est vide, le corps est nul, et la bande-annonce est vide

Ils ne peuvent actuellement pas être lus lorsque le type est opaque.

Une réponse opaque est pour une demande faite pour une ressource sur une origine différente qui ne retourne pas les en-têtes CORS. Avec une réponse opaque, nous ne serons pas en mesure de lire les données renvoyées ou d'afficher l'état de la demande, ce qui signifie que nous ne pouvons pas vérifier si la requête a réussi ou non. Avec l'implémentation actuelle de fetch(), il n'est pas possible d'effectuer des demandes de ressources sur une origine différente à partir de la portée globale de la fenêtre.

See Google's docs on the opaque type.